提问人:Kev 提问时间:9/29/2010 最后编辑:hakreKev 更新时间:4/22/2020 访问量:14619
为什么 PHP 5.2.14 不会显示任何错误(即使是来自命令行)?
Why won't PHP 5.2.14 display any errors (even from the command line)?
问:
我在 Windows 2008 R2 服务器和 Windows 7 64 位上安装了 PHP 5.2.10 和 PHP 5.2.14(x86 非线程安全 Win32 版本)。
由于某种原因,PHP 5.2.14 拒绝显示错误消息。
即使我在 5.2.14 中设置了以下设置,我也不会报告任何错误:php.ini
error_reporting = E_ALL
display_errors = On
即使从命令行运行测试脚本时,也会发生这种情况,并出现故意的语法错误:php.exe
c:\php>
php test.php
PHP 使用的是正确的文件,因为我可以看到我的设置在运行时发生了变化。php.ini
php.exe -i
我还注意到,在 PHP 5.2.14 中启动速度非常慢。php.exe
当我在同一台机器上使用 PHP 5.2.10 执行同一组测试时,我会收到错误消息报告。
这两个文件都是库存的(基于 ),但修改了 和 设置。php.ini
php.ini-recommended
error_reporting
display_errors
答:
您可能还必须启用display_startup_errors
:
display_startup_errors boolean
即使打开,也不会显示 PHP 启动过程中发生的错误。强烈建议保持关闭状态,但调试除外。
display_errors
display_startup_errors
您也可以尝试对文件进行 lint 以测试语法错误。c:\php>php -l test.php
评论
display_startup_errors
error_reporting
error_reporting = "E_ALL & ~E_NOTICE"
最近,我不得不在别人的项目上工作......无法调试,我别无选择,只能检查一下:
error_reporting(0);
因此,请检查您的源代码。搜索如下内容:“error_reporting(0);”。
找到它后,评论它!!
通常,您不必将其放在源代码中,而是将其放在php.ini文件中。
评论
我正在运行一个更高的 PHP (5.4.24),但这些其他答案缺少我在其他地方发现的 -d
选项,这使得 PHP 在从命令行运行时显示可理解的解析错误:
php -d display_errors test.php
这是我在谷歌上搜索的问题的最佳答案。运行 linter 只会告诉您“解析foo.php时出错”。-l
评论
alias phprun="php -d display_errors"
我发现这真的很烦人,所以这里有一个从命令行检查语法的策略:
- 不要加载 ini 文件。
- 打开display_errors并显式display_startup_errors。
php -n -l -d display_errors -d display_startup_errors path/to/your/phpfile.php
$ php -h
-n No php.ini file will be used
-l lint, syntax checking only
-d foo[=bar] Define INI entry foo with value 'bar'
评论