2016-09-14 49 views
0

我正在繼承一個網站,只是將所有內容切換到php7。由於此開關,我一直在發現很多錯誤。一個錯誤是函數simplexml_load_file()沒有返回任何東西。我向它傳遞了一個變量,該變量已設置爲服務器上的文件路徑(即/dir/dir/dir/template.xml)。但是當這個函數被調用時,它不會返回任何值,既不是我們想要的對象也不是一個0來表示它失敗。SimpleXML模塊在重新啓動時消失

我沒有經驗的PHP,所以我很難找出出了什麼問題。我在網上檢查器中檢查了文件template.xml中的錯誤,但沒有發現任何錯誤。我檢查了文件路徑是否正確,但我想知道/dir/dir/dir/template.xml的格式是否有誤。我見過的這個問題的所有例子都處理了一個url而不是本地文件。

的準確代碼行是:

$xml = simplexml_load_file($TempleteXml) or die("Unable to load configuration data!"); 

,我已經嘗試過將它分解,以確保模具()是沒有問題的。

編輯:我在發生此問題的代碼中找到了另一個地方。這是另一個文件,其中以完全相同的方式調用相同類型的文件。

編輯:我終於能夠得到一個錯誤,告訴我發生了什麼。問題是:「未捕獲的錯誤:調用未定義的函數simplexml_load_file()...」因此,出於某種原因,即使在NetBeans上,我也不知道在哪裏可以找到該文件,所以我能夠確切地知道它在哪裏聲明。接下來我將研究這一問題。

編輯:原來,這是一個常見的問題。出於某種原因,當更新到php7.0時,未安裝SimpleXML(這是該函數所在的擴展名)。我發現這裏:PHP 7 simpleXML 但是,當我這樣做最初「php -m」顯示SimpleXML被列爲啓用,但是當我重新啓動apache2 SimpleXML然後消失。有誰知道爲什麼一個PHP模塊會在重新啓動時消失嗎?

+0

我今天在服務器上使用了一個絕對的文件路徑,在PHP 7下,它的工作方式和預期一樣,所以不應該成爲問題。使用'is_file($ TemplateXml)'檢查腳本是否可以找到該文件? –

+0

返回1.因此它可以找到該文件。這是一個好的開始。 – khm

+0

你有錯誤報告和顯示錯誤嗎?檢查日誌文件的任何線索? –

回答

0

所以我想通了! simplexml_load_file()不會加載,因爲未安裝SimpleXML。要安裝它,我必須做「apt-get install php7.0-xml」。我通過執行「php -m」來檢查它是否已安裝。 它一直消失的原因是我沒有正確重啓apache2服務器。它只有當我做了「/etc/init.d/apache2 restart」然後「poweroff」時才起作用。這樣,當我重新啓動我的VirtualBox機器時,它仍然會顯示SimpleXML被安裝。

相關問題