Configuration 为什么赢了';PHP5.2.14是否显示任何错误(甚至从命令行)?

Configuration 为什么赢了';PHP5.2.14是否显示任何错误(甚至从命令行)?,configuration,error-handling,php,error-reporting,Configuration,Error Handling,Php,Error Reporting,我在Windows2008R2服务器和Windows7 64位上安装了PHP5.2.10和PHP5.2.14(x86非线程安全Win32版本) 由于某些原因,PHP5.2.14拒绝显示错误消息 即使在php.ini中设置以下设置,如果使用5.2.14,也不会报告任何错误: error_reporting = E_ALL display_errors = On 即使使用带有故意语法错误的php.exe从命令行运行测试脚本,也会发生这种情况: c:\php>php test.php PHP正在使用

我在Windows2008R2服务器和Windows7 64位上安装了PHP5.2.10和PHP5.2.14(x86非线程安全Win32版本)

由于某些原因,PHP5.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
时,我可以看到我的设置发生了变化

我还注意到PHP5.2.14中的
php.exe
启动非常慢

当我在同一台机器上使用PHP5.2.10执行同一组测试时,我会收到很好的错误消息报告

这两个
php.ini
文件都是库存文件(基于
php.ini推荐的
),但是
错误报告
显示错误
设置已修改。

您可能还必须启用:

即使启用了
display\u errors
,也不会显示PHP启动序列中发生的错误。强烈建议关闭
display\u startup\u errors
,调试除外


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

最近,我不得不处理其他人的项目。。。无法调试,我别无选择,只能检查以下内容:

error_reporting(0);
所以,检查一下你的源代码。搜索类似这样的内容:“错误报告(0)”

一旦你找到它,评论它

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

我正在运行一个更高版本的php(5.4.24),但这些其他答案缺少使php在从命令行运行时显示可理解的解析错误的答案:

php -d display_errors test.php

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

我发现这确实很烦人,因此这里有一个从命令行检查语法的策略:

php -d display_errors test.php
  • 不要加载ini文件
  • 启用“显示错误”并显式显示“启动错误”
  • php-n-l-d显示\u错误-d显示\u启动\u错误路径/to/your/phpfile.php

    $php-h
    -n不使用php.ini文件
    -l lint,仅用于语法检查
    -d foo[=bar]使用值“bar”定义INI条目foo
    
    你每天都能学到新东西。事实证明,PHP无法加载SQLite3扩展,因为pdo.dll扩展(依赖于此)没有取消注释。当
    display\u startup\u errors
    设置为off时,这似乎会导致解析错误被吞没。非常感谢。事实上……进一步调查。有人在
    错误报告
    标志值周围加了引号。这才是真正的原因。i、 e.-
    error\u reporting=“e\u ALL&~e\u NOTICE”
    。更好的方法是,添加一种在开发期间(并且仅在开发期间)关闭它的方法。这些错误消息可以告诉潜在的黑客很多关于您的服务器的信息。尽管这是最好的回答,但display\u errors标志中有一点输入错误。我将其用作别名
    alias phprun=“php-d display\u errors”