如何让PHP显示错误而不是给我500内部服务器错误

时间:2010-04-22 01:45:59

标签: apache php

这从未发生过。通常它会显示错误,但现在它只给我一个500内部服务器错误。当然,之前,当它显示错误时,它是不同的服务器。现在我在一个新的服务器上(我有完全的root,所以如果我需要在php.ini中的某个地方配置它,我可以。)或者它可能是Apache的东西?

我一直在忍受它,只需将文件传输到我的其他服务器并在那里运行它以找到错误,但这变得太乏味了。有办法解决这个问题吗?

7 个答案:

答案 0 :(得分:191)

检查error_reporting文件中的display_errorsdisplay_startup_errorsphp.ini设置。它们应分别设置为E_ALL"On"(尽管您不应在生产服务器上使用display_errors,因此如果/部署它时,请禁用此选项并使用log_errors )。您还可以在脚本的最开始更改这些设置(display_startup_errors除外)以在运行时设置它们(尽管您可能无法以这种方式捕获所有错误):

error_reporting(E_ALL);
ini_set('display_errors', 'On');

之后,重新启动服务器。

答案 1 :(得分:16)

值得注意的是,如果您的错误是由.htaccess引起的,例如缺少rewrite_module,您仍会看到500内部服务器错误。

答案 2 :(得分:10)

使用“php -l< filename>” (这是一个'L')从命令行输出语法错误,可能导致PHP抛出状态500错误。它会输出如下内容:

PHP Parse错误:语法错误,< filename>中的意外'}'第18行

答案 3 :(得分:3)

从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

这有助于我找到输入错字的行。

答案 4 :(得分:3)

尽量不要去

MAMP > conf > [your PHP version] > php.ini

但是

MAMP > bin > php > [your PHP version] > conf > php.ini

并在那里改变它,它对我有用......

答案 5 :(得分:2)

小心检查是否

display_errors

error_reporting

在ini文件中的其他位置处于活动状态(不是注释)。

我的开发服务器在升级到之后拒绝显示错误 Kubuntu 16.04 - 我曾多次检查过php.ini ......结果发现有一个diplay_errors = off;我的

以下约100行
display_errors = on;

所以请记住最后一个计数!

答案 6 :(得分:0)

如果所有其他方法都失败,请尝试移动(即在bash中)所有文件和目录"远离"并逐一添加它们。

我刚刚发现我的.htaccess文件引用了一个不存在的.htpasswd文件。 (#silly)