我检查了我的PHP ini文件(PHP.ini),并设置了display_errors,错误报告也是E_ALL。我已重新启动Apache Web服务器。
我甚至把这些行放在了脚本的顶部,它甚至不能捕捉到简单的解析错误。例如,我用“$”声明变量,而不关闭语句“;”。但我的所有脚本都显示了这些错误的空白页面,但我希望在浏览器输出中看到这些错误。
error_reporting(E_ALL);
ini_set('display_errors', 1);
还有什么要做?
我检查了我的PHP ini文件(PHP.ini),并设置了display_errors,错误报告也是E_ALL。我已重新启动Apache Web服务器。
我甚至把这些行放在了脚本的顶部,它甚至不能捕捉到简单的解析错误。例如,我用“$”声明变量,而不关闭语句“;”。但我的所有脚本都显示了这些错误的空白页面,但我希望在浏览器输出中看到这些错误。
error_reporting(E_ALL);
ini_set('display_errors', 1);
还有什么要做?
当前回答
这将起作用:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>
其他回答
Use:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
这是编写它的最佳方法,但语法错误会产生空白输出,因此请使用控制台检查语法错误。调试PHP代码的最佳方法是使用控制台;运行以下操作:
php -l phpfilename.php
报告除E_NOTICE之外的所有错误
error_reporting(E_ALL & ~E_NOTICE);
显示所有PHP错误
error_reporting(E_ALL); or ini_set('error_reporting', E_ALL);
关闭所有错误报告
error_reporting(0);
如果是在命令行上,则可以使用-display_errors=1运行php以覆盖php.ini中的设置:
php -ddisplay_errors=1 script.php
这对我来说总是有效的:
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
然而,这并不能使PHP显示同一文件中发生的解析错误-显示这些错误的唯一方法是使用以下行修改PHP.ini:
display_errors = on
(如果您没有访问php.ini的权限,那么在.htaccess中输入这一行也可以):
php_flag display_errors 1
请注意,上述建议仅适用于开发环境。在实时站点上,display_errors必须设置为0,而log_errors设置为1。然后,您将能够在错误日志中看到所有错误。
在AJAX调用的情况下,在开发服务器上打开DevTools(F12),然后打开Network选项卡。然后启动您希望看到的结果的请求,它将显示在“网络”选项卡中。单击它,然后单击“响应”选项卡。在那里您将看到确切的输出。在实时服务器上,只需检查错误日志即可。
在Unix CLI中,只将错误重定向到文件是非常实用的:
./script 2> errors.log
在脚本中,可以像往常一样使用var_dump()或等效方法(STDOUT和STDERR都将接收输出),但只能在日志文件中写入:
fwrite(STDERR, "Debug infos\n"); // Write in errors.log^
然后从另一个shell中进行实时更改:
tail -f errors.log
或者干脆
watch cat errors.log