php 服务器内部错误(500)[重复]

bxpogfeg  于 2023-02-28  发布在  PHP
关注(0)|答案(4)|浏览(147)
    • 此问题在此处已有答案**:

How do I get PHP errors to display?(27个答案)
13小时前关门了。
我在Amazon AWS上使用 * Apache2/MySQL/PHP5全新安装了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');,它会正常显示错误,但是我如何在整个站点范围内启用这个错误?

mw3dktmi

mw3dktmi1#

您粘贴的php.ini代码段中有一个分号(分号;php.ini中,分号是注解的开头,因此分号后面的行中的所有内容都不会使用。请尝试手动将display_errors设置为on,将error_reporting设置为E_ALL,或者删除相应的分号来修复此问题。
此外,检查你的apache的错误日志,php可能会在那里记录它的错误。

yyyllmsg

yyyllmsg2#

请使用sudo gedit/etc/php5/apache2/php.ini编辑php.ini文件,并且在生产值上,或者您也可以使用ini_set('display_errors','1');在你的php文件的顶部

bjg7j2ky

bjg7j2ky3#

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

yiytaume

yiytaume4#

// 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以指示服务器错误。最后,尝试使用未定义的变量将触发一个示例错误。

相关问题