这从未发生过。通常它会显示错误,但现在它只给我一个500内部服务器错误。当然,之前,当它显示错误时,它是不同的服务器。现在我在一个新的服务器上(我有完全的root,所以如果我需要在php.ini中的某个地方配置它,我可以。)或者它可能是Apache的东西?
我一直在忍受它,只需将文件传输到我的其他服务器并在那里运行它以找到错误,但这变得太乏味了。有办法解决这个问题吗?
答案 0 :(得分:191)
检查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');
之后,重新启动服务器。
答案 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)