我在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_reporting
和display_errors
设置。
答案 0 :(得分:11)
我发现这真的很烦人,所以这是从CLI检查语法的策略:
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中。
@ +