2012-07-31 102 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文件的顶部