PHP 不显示错误 - 内部服务器错误 (500)

Posted

技术标签:

【中文标题】PHP 不显示错误 - 内部服务器错误 (500)【英文标题】:PHP not displaying errors - Internal Server Error (500) 【发布时间】:2012-07-29 17:55:27 【问题描述】:

我已经使用 *Apache2/mysql/php5 在 Amazon AWS 上安装了全新的 Ubuntu Server 12.04 LTS。当我运行 PHP 脚本并遇到错误时,我没有看到任何来自 PHP 的错误报告,我看到的只是

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 Server 12.04 LTS 的完全基础安装

编辑: 如果我在脚本开头使用ini_set('display_errors', '1');,它会正常显示错误,但是如何在整个站点范围内启用?

【问题讨论】:

如果您的 apache 服务器,您是否在 error_log 中看到任何内容?听起来 mode_php 只是不起作用。仅包含 <? phpinfo(); ?> 的 php 文件会给出输出吗? 你检查过apache错误日志/var/log/apache2/error.log吗? 您的 php.ini 中的所有这些行都被注释掉了。找到display_errors 的声明位置并将其打开。 <?phpinfo(); ?> 按预期提供输出。 Apache 错误日志显示了我所期待的 PHP 错误(意外的 T_STRING / 无法打开所需文件)以及我识别的其他内容(Apache 重新启动)。 @stevether 我找到了display_errorsdisplay_startup_errors 并将它们的值从Off 更改为On,但仍然是同样的问题?我是否必须取消注释它们上面与我最初发布的注释行相同的行? 【参考方案1】:

您粘贴的 php.ini sn-p 在每一行中都有一个分号(; 字符)。分号是 php.ini 中注释的开头,因此不使用分号后面的所有内容。尝试手动将 display_errors 设置为 on 并将 error_reporting 设置为 E_ALL,或者删除相应的分号来解决此问题。

此外,检查你的 apache 的错误日志,php 可能在那里记录它的错误。

【讨论】:

我从上面发布的 sn-p 中取消了 ; 的注释,并设置了 display_errors = Ondisplay_startup_errors = On 我在 php.ini 文件中找到它们的位置,但仍然是同样的问题? 在更改 php.ini 后是否重新启动了 apache? apache 的错误日志中是否有任何错误? 在等待您的回复时重新启动了 apache,这就解决了。原来不这样做感觉有点傻!感谢您的帮助:)【参考方案2】:

请使用 sudo gedit /etc/php5/apache2/php.ini 和 Production Value 编辑 php.ini 文件,或者您也可以使用 ini_set('display_errors', '1');在你的 php 文件的顶部

【讨论】:

【参考方案3】:

我有同样的问题,但与 php.ini 无关 如果你有同样的错误,在你开始在你的服务器上截图之前,首先检查你的代码。 错误可能是缺少 ) 或 ;或类似的东西。 这只是参考首先要做什么。

【讨论】:

以上是关于PHP 不显示错误 - 内部服务器错误 (500)的主要内容,如果未能解决你的问题,请参考以下文章

PHP:AJAX 请求出现 500 内部服务器错误

如何解决我的 PHP 页面上的 500 内部服务器错误?

CodeIgniter 500 内部服务器错误

php文件的500内部服务器错误不是html [重复]

php返回500错误但没有错误日志

如何让 PHP 显示错误而不是给我 500 Internal Server Error [重复]