2012-07-31 147 views
18

我已經在Amazon AWS上用* Apache2/MySQL/PHP5設置了Ubuntu Server 12.04 LTS的全新安裝。當我運行一個PHP腳本,它遇到的錯誤,我沒有看到任何錯誤從PHP報告,我看到的是PHP不顯示錯誤 - 內部服務器錯誤(500)

HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfil the request. 

我檢查了我的/etc/php5/apache2/php.ini文件,據我可以告訴錯誤報告應該是建立。該文件(有關錯誤)的內容是:

; display_errors 
;  Default Value: On 
;  Development Value: On 
;  Production Value: Off 

; display_startup_errors 
;  Default Value: Off 
;  Development Value: On 
;  Production Value: Off 

; error_reporting 
;  Default Value: E_ALL & ~E_NOTICE 
;  Development Value: E_ALL | E_STRICT 
;  Production Value: E_ALL & ~E_DEPRECATED 

誰能指教?如果我嘗試類似$obj = new ObjectDoesntExist;的東西,它不會告訴我Fatal error: Class 'ObjectDoesntExist'它給我一個服務器500錯誤。

有沒有建議嗎?

*我安裝的模塊是:mysql-server mysql-client apache2 php5 libapache2-mod-php5 phpmyadmin。除此之外,它是一個完全基地安裝的Ubuntu服務器12.04 LTS

編輯: 如果我在腳本開始時使用ini_set('display_errors', '1');它顯示錯誤正常,但如何啓用此網站廣泛?

+0

如果你的apache服務器在error_log中看到什麼了嗎?這聽起來像mode_php只是不工作。一個PHP文件只包含「<?的phpinfo(); ?>給出輸出? – favoretti 2012-07-31 21:11:37

+0

你檢查過apache錯誤日誌'/ var/log/apache2/error.log'嗎? – Kalpesh 2012-07-31 21:13:00

+2

你php.ini中的所有行都被註釋掉了。找到聲明display_errors的位置並將其打開。 – 2012-07-31 21:17:25

回答

14

您粘貼的php.ini代碼段在每行中都有一個分號(;字符)。分號是php.ini中註釋的開始,因此不使用分號後面的所有內容。嘗試手動將display_errors設置爲on並將error_reporting設置爲E_ALL,或者刪除合適的分號以解決此問題。

此外,檢查您的Apache的錯誤日誌,PHP可能會記錄其錯誤。

+0

我從上面發佈的代碼片段取消了註釋';',並在'php.ini'文件中找到它們並設置了'display_errors = On'和'display_startup_errors = On',但仍然是同樣的問題? – iainjames88 2012-07-31 21:24:47

+1

您是否在php.ini中進行了更改後重新啓動了Apache? Apache的錯誤日誌中的任何錯誤? – Wouter 2012-07-31 21:25:56

+2

在等待您的回覆時重新啓動Apache,並解決了這個問題。感覺有點傻了原本不這樣做!感謝您的幫助:) – iainjames88 2012-07-31 21:26:49

0

我有同樣的問題,但與php.ini 無關如果你有相同的錯誤,在你開始在你的服務器上剪切之前,先檢查你的代碼。 錯誤可能是一個缺失})或;或類似的東西。 這只是參考首先要做的事情。

2

請使用sudo gedit /etc/php5/apache2/php.ini和生產值編輯php.ini文件,或者也可以使用ini_set('display_errors','1');在你的php文件的頂部