提问人:Rob 提问时间:4/22/2010 更新时间:8/17/2021 访问量:273245
如何让PHP显示错误而不是给我500内部服务器错误[重复]
How can I make PHP display the error instead of giving me 500 Internal Server Error [duplicate]
问:
这在以前从未发生过。通常它会显示错误,但现在它只会给我一个 500 内部服务器错误。当然,以前,当它显示错误时,它是不同的服务器。现在我在一个新的服务器上(我有完全的root,所以如果我需要在php.ini中的某个地方配置它,我可以。或者也许是Apache的东西?
我一直在忍受它,只是将文件传输到我的另一台服务器并在那里运行它以查找错误,但这变得太乏味了。有没有办法解决这个问题?
答:
检查文件中的 和设置。它们应分别设置为 和 (尽管您不应该在生产服务器上使用,因此请禁用它并在部署时/部署它时改用它)。您还可以在脚本的开头更改这些设置(除了 ),以便在运行时设置它们(尽管您可能不会以这种方式捕获所有错误):error_reporting
display_errors
display_startup_errors
php.ini
E_ALL
"On"
display_errors
log_errors
display_startup_errors
error_reporting(E_ALL);
ini_set('display_errors', 'On');
之后,重新启动服务器。
评论
php_flag display_errors 1
值得注意的是,如果您的错误是由于 .htaccess(例如缺少rewrite_module)引起的,您仍然会看到 500 内部服务器错误。
评论
启用从PHP代码显示错误对我来说不起作用。就我而言,使用 NGINX 和 PHP-FMP,我使用 grep 跟踪日志文件。例如,我知道文件名mycode.php导致错误500,但不知道是哪一行。在控制台中,我使用以下内容:
/var/log/php-fpm# cat www-error.log | grep mycode.php
我有输出:
[04-Apr-2016 06:58:27] PHP Parse error: syntax error, unexpected ';' in /var/www/html/system/mycode.php on line 1458
这有助于我找到有错别字的行。
使用命令行中的“L”输出语法错误,该错误可能导致 PHP 抛出状态 500 错误。它将输出如下内容:php -l <filename>
PHP Parse error: syntax error, unexpected '}' in <filename> on line 18
评论
小心检查是否
display_errors
或
error_reporting
在 ini 文件的其他位置处于活动状态(不是注释)。
我的开发服务器在升级到 Kubuntu 16.04 - 我已经检查了 php.ini 很多次了...原来有一个diplay_errors=关闭;大约100行低于我的
display_errors = on;
所以请记住最后一个很重要!
如果所有其他方法都失败了,请尝试将所有文件和目录“移开”并逐个添加。
我刚刚发现我的 .htaccess 文件引用了一个不存在的 .htpasswd 文件。(#silly)
尽量不要去
MAMP > conf > [your PHP version] > php.ini
但
MAMP > bin > php > [your PHP version] > conf > php.ini
并在那里改变它,它对我有用......
评论