为什么PHP 5.2.14不会显示任何错误(甚至从命令行)?

时间:2010-09-29 08:41:45

标签: configuration error-handling php error-reporting

我在Windows 2008 R2服务器和Windows 7 64位上安装了PHP 5.2.10和PHP 5.2.14(x86非线程安全的Win32版本)。

由于某些原因,PHP 5.2.14拒绝显示错误消息。

即使我在php.ini中设置了以下设置,如果我使用5.2.14,也不会报告任何错误:

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_reportingdisplay_errors设置。

4 个答案:

答案 0 :(得分:11)

我发现这真的很烦人,所以这是从CLI检查语法的策略:

  1. 不要加载ini文件。
  2. 明确启用display_errors和display_startup_errors。
  3. 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'
    

答案 1 :(得分:8)

我正在运行更高版本的PHP(5.4.24),但这些其他答案缺少-d option I found exemplified elsewhere,这使得PHP在从cli运行时显示可理解的解析错误:

php -d display_errors test.php

这是我在谷歌上搜索的问题的最佳答案。使用-l运行linter只会告诉您“解析foo.php的错误”

答案 2 :(得分:5)

您可能还必须启用display_startup_errors

display_startup_errors  boolean
  

即使启用display_errors,也不会显示PHP启动序列期间发生的错误。除了调试之外,强烈建议关闭display_startup_errors

您还可以尝试使用c:\php>php -l test.php对文件进行lint来测试语法错误。

答案 3 :(得分:3)

最近,我不得不在别人的项目上工作......无法调试,我别无选择,只能检查一下:“error_reporting(0);”

因此,请检查您的源代码。搜索类似这样的内容:“error_reporting(0);”。 一旦找到它,请评论!!!

Normaly,你不必把它放在源代码中,而是放在php.ini中。

@ +