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_errors
和display_startup_errors
并将它们的值从Off
更改为On
,但仍然是同样的问题?我是否必须取消注释它们上面与我最初发布的注释行相同的行?
【参考方案1】:
您粘贴的 php.ini sn-p 在每一行中都有一个分号(; 字符)。分号是 php.ini 中注释的开头,因此不使用分号后面的所有内容。尝试手动将 display_errors 设置为 on 并将 error_reporting 设置为 E_ALL,或者删除相应的分号来解决此问题。
此外,检查你的 apache 的错误日志,php 可能在那里记录它的错误。
【讨论】:
我从上面发布的 sn-p 中取消了;
的注释,并设置了 display_errors = On
和 display_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)的主要内容,如果未能解决你的问题,请参考以下文章