这在以前从未发生过。通常它会显示错误,但现在它只给我一个 500 内部服务器错误。当然之前显示错误的时候是不同的服务器。现在我在一个新服务器上(我有完整的根目录,所以如果我需要在 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 -l <filename>
(这是一个“L”)来输出可能导致 PHP 抛出状态 500 错误的语法错误。它会输出类似:
PHP Parse error: syntax error, unexpected '}' in <filename> on line 18
值得注意的是,如果您的错误是由于 .htaccess,例如缺少 rewrite_module,您仍然会看到 500 内部服务器错误。
注意检查是否
display_errors
或
error_reporting
在 ini 文件的其他地方处于活动状态(不是注释)。
我的开发服务器升级后拒绝显示错误 Kubuntu 16.04 - 我已经多次检查过 php.ini ...结果发现有一个 diplay_errors = off;我
下面大约100行display_errors = on;
所以记住最后一个很重要!
尽量不要去
MAMP > conf > [your PHP version] > php.ini
但是
MAMP > bin > php > [your PHP version] > conf > php.ini
然后在那里改变它,它对我有用......
从 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
这可以帮助我找到打字错误的那一行。
如果一切都失败了,请尝试移动(即在 bash 中)所有文件和目录“离开”并将它们一个一个地添加回来。
我刚刚发现我的 .htaccess 文件引用了一个不存在的 .htpasswd 文件。 (#愚蠢)