10

我在 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.exePHP 5.2.14 的启动速度非常慢。

当我在同一台机器上使用 PHP 5.2.10 执行同一组测试时,我得到的错误消息报告得很好。

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

4

4 回答 4

11

我发现这真的很烦人,所以这里有一个从命令行检查语法的策略:

  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'
于 2014-09-05T23:48:52.427 回答
8

我正在运行更高版本的 PHP(5.4.24),但是这些其他答案缺少-d我在其他地方找到的示例,这使得 PHP 在从命令行运行时显示可理解的解析错误:

php -d display_errors test.php

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

于 2014-03-06T23:11:19.903 回答
5

您可能还必须启用display_startup_errors

display_startup_errors  boolean

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

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

于 2010-09-29T08:46:20.680 回答
3

最近,我不得不在别人的项目上工作......无法调试,我别无选择,只能检查这个:

error_reporting(0);

因此,请检查您的源代码。搜索类似这样的内容:“error_reporting(0);”。

找到了就点赞吧!!!

通常,您不必将它放在源代码中,而是放在php.ini文件中。

于 2010-12-09T11:08:26.610 回答