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

Kev*_*Kev 10 php error-handling configuration 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
Run Code Online (Sandbox Code Playgroud)

即使在使用php.exe故意语法错误从命令行运行测试脚本时,也会发生这种情况:

C:\ PHP>php test.php

PHP正在使用正确的php.ini文件,因为我可以在运行时看到我的设置发生变化php.exe -i.

我还注意到php.exe在PHP 5.2.14中启动非常慢.

当我在同一台机器上使用PHP 5.2.10执行相同的测试集时,我收到错误消息报告就好了.

这两个php.ini文件都是库存(基于php.ini-recommended),但修改了error_reportingdisplay_errors设置.

小智 11

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

  1. 不要加载ini文件.
  2. 显式启用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'
Run Code Online (Sandbox Code Playgroud)


Nat*_*han 8

我正在运行一个更高版本的PHP(5.4.24),但这些其他答案缺少-d我在其他地方举例说明选项,这使得PHP在从cli运行时显示可理解的解析错误:

php -d display_errors test.php
Run Code Online (Sandbox Code Playgroud)

这是我用谷歌搜索的问题的最佳答案.运行-llinter只会告诉你"错误解析foo.php"

  • 我用它作为别名`alias phprun ="php -d display_errors"` (2认同)

Gor*_*don 5

您可能还必须启用display_startup_errors:

display_startup_errors  boolean
Run Code Online (Sandbox Code Playgroud)

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

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