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

以前从没发生过这种事。通常它显示错误,但现在它只是给我一个500内部服务器错误。当然在此之前,当它显示错误时,它是不同的服务器。现在我在一个新的服务器上(我有完整的 root 用户,所以如果需要在 php.ini 中的某个地方配置它,我可以这样做)或者是和阿帕奇人有关?

我一直在忍受把文件传输到我的另一个服务器并在那里运行它来找到错误,但是这变得太乏味了。有办法解决吗?

249503 次浏览

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

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

然后,重启服务器。

值得注意的是,如果您的错误是由于。例如,一个丢失的 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

这可以帮助我找到打字错误的地方。

使用命令行中的 php -l <filename>(即“ L”)输出可能导致 PHP 抛出状态500错误的语法错误。它会输出这样的信息:

PHP Parse error: syntax error, unexpected '}' in <filename> on line 18

小心检查

display_errors

或者

error_reporting

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

升级到。我的开发服务器拒绝显示错误 Kubuntu 16.04-我已经检查了无数次 php.ini... 结果发现有一个 display _ error = off; 在我的

display_errors = on;

记住最后一个也算!

如果所有其他方法都失败了,尝试移动(例如在 bash 中)所有的文件和目录“远离”并逐个添加回来。

我只是发现我的.htaccess 文件引用了一个不存在的.htpasswd 文件

尽量别去

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

但是

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

在那里改变,对我很有效。