提问人:iainjames88 提问时间:8/1/2012 最后编辑:iainjames88 更新时间:2/28/2023 访问量:47773
PHP 不显示错误 - 内部服务器错误 (500) [重复]
PHP not displaying errors - Internal Server Error (500) [duplicate]
问:
我已经使用 *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
谁能建议?如果我尝试类似的东西,它不会告诉我它会给我一个服务器 500 错误。$obj = new ObjectDoesntExist;
Fatal error: Class 'ObjectDoesntExist'
有什么建议吗?
* 我安装的模块是: .除此之外,它是 Ubuntu Server 12.04 LTS 的完全基础安装mysql-server mysql-client apache2 php5 libapache2-mod-php5 phpmyadmin
编辑:
如果我在脚本开始时使用,它会像往常一样显示错误,但是我如何在整个站点范围内启用此站点?ini_set('display_errors', '1');
答:
粘贴的php.ini代码段每行都有一个分号(;字符)。分号是php.ini注释的开头,因此不使用分号后面的一行中的所有内容。尝试手动将display_errors设置为“打开”,将“error_reporting”设置为“E_ALL”,或删除相应的分号来解决此问题。
此外,检查您的apache的错误日志,php可能会在那里记录其错误。
评论
;
display_errors = On
display_startup_errors = On
php.ini
我有同样的问题,但与php.ini无关 如果遇到相同的错误,在开始在服务器上截图之前,请先检查代码。 错误可能是缺失的 } ) 或 ;或类似的东西。 这只是参考首先要做什么。
请使用 sudo gedit /etc/php5/apache2/php.ini 和 Production Value 编辑php.ini文件,或者您也可以使用 ini_set('display_errors', '1');在 PHP 文件顶部
// Disable displaying errors, enable logging
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', '/var/log/php_error.log');
// Handle errors and exceptions
set_error_handler(function($errno, $errstr, $errfile, $errline) {
error_log(sprintf("[%s] %s in %s on line %d", date('Y-m-d H:i:s'), $errstr, $errfile, $errline));
http_response_code(500);
exit();
});
set_exception_handler(function($exception) {
error_log(sprintf("[%s] Uncaught exception '%s' with message '%s' in %s:%d\nStack trace:\n%s\n",
date('Y-m-d H:i:s'),
get_class($exception),
$exception->getMessage(),
$exception->getFile(),
$exception->getLine(),
$exception->getTraceAsString()
));
http_response_code(500);
exit();
});
- set_error_handler处理 PHP 错误,set_exception_handler处理异常。发生错误或异常时,使用 error_log 函数将消息记录到错误日志文件中,并将响应代码设置为 500 以指示服务器错误。最后,尝试使用未定义的变量会触发示例错误。
评论
<? phpinfo(); ?>
/var/log/apache2/error.log
display_errors
<?phpinfo(); ?>
按预期提供输出。Apache错误日志显示了我所期望的PHP错误(意外T_STRING/打开所需文件失败)以及我识别的其他内容(Apache重新启动)。display_errors
display_startup_errors
Off
On