2017-07-28 71 views
0

當我開始我的最新項目時,我學會了如何使用xdebug擴展,並從此一直使用它。現在我準備啓動服務器並使用此項目進行生產,並且我的網站無法正常工作。前端頁面似乎也起作用,這也是基於php的,但後端端點查詢數據庫並將一些數據返回到前端總是返回500狀態碼。所以我附加了xdebug並找出如何遠程運行它,並且所有頁面都開始工作,而不需要更改任何代碼。我進入php.ini文件並關閉它,頁面繼續工作。由於這是一個AWS EC2服務器,因此我刪除了該實例並創建了一個運行我編寫的用於安裝所有軟件的相同初始化腳本的新實例,並得到完全相同的問題。直到我按照xdebug安裝說明並重新啓動apache2,服務器才工作。即使在我通過php.ini文件取消xdebug擴展時,代碼仍然可以繼續工作。即使在系統重新啓動後,它仍然繼續工作,因此無論什麼問題得到解決似乎都是永久性的。只有在使用Xdebug擴展時,代碼纔有效

構建和附加xdebug擴展以及重新啓動Apache2的操作對LAMP堆棧會產生什麼影響,即使在關閉擴展之後,它也能使我的代碼正常工作?我的服務器是使用腳本構建的,腳本運行各種apt-get install命令,但沒有提供二進制文件,因爲它們都是社區提供的程序。像發條一樣,每次重建機器時都會中斷,直到我應用擴展。如果必須的話,我可以將它自動化到我的構建腳本中,但是這讓我有點瘋狂,我不明白髮生了什麼。

+0

看看錯誤日誌。在默認情況下,Ubuntu位於'/ var/log/apache2/error.log',你需要root來訪問它。您可以運行如下命令:'sudo tail -f/var/log/apache2/error.log'將其打開並保持打開狀態以進行監視。然後重新加載錯誤頁面幾次,看看出現了什麼。我想下面,你正在調用一些內部xdebug函數,沒有擴展名不存在。這或安裝xdebug它覆蓋了一些php.ini值的錯誤,並且錯誤總是發生,你只是沒有看到它。 –

+0

謝謝,對於這個問題以及未來的問題我非常有用。我需要更好地瞭解Linux服務器上可以使用哪些日誌。 –

回答

0

我建議你嘗試找到諸如var_dump()或任何在你的代碼前綴由xdebug_任何Xdebug的特定函數的調用: https://xdebug.org/docs/all_functions

+1

'var_dump'是一個PHP標準函數。 [參考文獻](http://php.net/manual/en/function.var-dump.php)。但否則我同意。 – linden2015

+0

代碼中的任何地方都沒有提及xdebug,但值得一試。謝謝 –

2

當服務器發送一個500錯誤,通常你會得到一個條目php_error.log。所以首先檢查這個文件。也許在內存限制上有一些差異,最大值。後變量等

+0

這聽起來像個好主意。打算拆掉機器並建立另一個機器並嘗試。 –

+0

我找不到這個特定的日誌,也不能在ini文件中找到它的引用,因爲默認情況下它必須指定設置。我通過/var/log/apache2/error.log獲得了必要的信息,每@ jonathan-kuhn評論建議。 –

0

什麼將構建和附加的xdebug擴展,並重新啓動Apache2,做一個LAMP堆棧,這將使我的代碼工作,即使在關閉擴展後?

安裝一個軟件可以帶來另一個。如果你sudo apt install php-xdebug沒有安裝php,它會安裝php。

+0

這就是我的想法。我只是按照他們提供的xdebug說明將他們的phpinfo頁面文本粘貼到其網站上的安裝配置工具中。它實際上涉及下載tarball和編譯源代碼,而不是通過包管理器安裝包。但我不知道make文件中發生了什麼。 –

+0

其他人看日誌的建議發現了這個問題,但你的建議是安裝一件東西可能會帶來必要的依賴關係。我的代碼依賴於SimpleXMLElement,當你安裝PHP時,它顯然在Ubuntu 16.04中默認沒有安裝(通過php7.0-xml)。 –

相關問題