不显示解析错误

时间:2009-06-02 20:36:37

标签: php iis-6 error-reporting

我希望PHP在屏幕上显示解析错误。我得到的是一个空白页面。没有任何内容写入服务器的错误日志文件。

我的设置:PHP5.2.9 / IIS 6 (不是Apache!)。

我的PHP.INI:

error_reporting=E_STRICT
display_errors = On
display_startup_errors = On
log_errors = On
error_log = "C:\Program Files\Zend\ZendServer\logs\php_error.log"

如何将解析或致命错误记录或显示在屏幕上?

谢谢, Temuri

更新:使用不同的交换机后,它看起来是IIS特定的问题。有什么想法吗?

8 个答案:

答案 0 :(得分:15)

设置php文件本身的错误级别并不能解决问题,因为文件本身无法解析!!

您需要在php.ini中更改error_reporting行,如下所示:

error_reporting = E_ALL

BTW:php.ini文件中有一些示例,说明如何显示哪种类型的错误消息。

祝你好运,

mcemoz

答案 1 :(得分:4)

Apache并不总是喜欢报告解析错误。从命令行运行

php -l <file>

-l开关告诉PHP检查文件语法。请参见手册页。

答案 2 :(得分:3)

E_STRICT未包含在E_ALL中(直到PHP 6)。如果您想继续获得E_STRICT

在php.ini中:

error_reporting = E_ALL | E_STRICT

在运行时:

error_reporting( E_ALL | E_STRICT );

您需要在php.ini中设置错误报告级别(和display_errors)以查看语法错误。如果PHP遇到语法错误,则运行时不会执行,因此在运行时设置将不起作用。 (请参阅display_errors链接。)

答案 3 :(得分:2)

您可以在终端中使用此命令验证脚本语法:

php -l path/to/file.php

就个人而言,我将此行添加到我的~/.bash_profile文件中,以便我可以轻松地对当前工作目录中的所有文件运行php -l

phpl() { for i in *.php; do php -l $i; done }

如果你真的是硬核,你甚至可以从命令行运行你的应用程序。你将有更好的机会看到编译时的错误,而且它有点酷。

您可以使用$ argv变量获取第一个参数$ argv [1],然后将其用作请求。

<?php
// show those errors!
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

// simulate a web server request
$request = '/' . isset($argv[1]) ? ltrim($argv[1], '/') : '/';
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'] = $request;

然后您可以通过命令行运行脚本。这相当于访问: your-webapp.com/request/uri/here

php /path/to/script.php request/uri/here

以下是通过命令行运行CodeIgniter的更全面的示例。它也适用于许多其他框架:http://phpstarter.net/2008/12/run-codeigniter-from-the-command-line-ssh/

答案 4 :(得分:2)

正如Rasmus Lerdorf建议的那样,始终在开发服务器上使用error_reporting(-1)。

答案 5 :(得分:0)

回复:php死亡死机的空白屏幕,我发现了设置

php_value error_reporting&#34; E_ALL&#34;要么 php_value error_reporting 8192

在我的Windows 7上的.htaccess中,Wampserver w / apache 2.2.4和php 5.3.13确定了获取空白php错误屏幕的方法 - 今天,2014年6月3日。这些htaccess行设置了欲望值在phpinfo()中,但只有在htaccess中注释掉(未使用)行时才会显示错误。

但是......下一分钟我发现了

php_value error_reporting 8191

设置phpinfo()值并允许向浏览器显示错误消息! d&#39;哦!它必须是一个整数,并且显然也是一个特定或有效的整数,而不仅仅是一个足够大的整数!

答案 6 :(得分:0)

如果您正在使用Zend Framework(v1)并且您正在使用Autoloader,则以下代码将阻止显示解析错误:

self::$Autoloader->suppressNotFoundWarnings(true);

有关详细信息,请参阅以下答案:

Display php errors when using Zend framework

答案 7 :(得分:-1)

试试这个。

error_reporting(E_ALL);
ini_set("display_errors", 1);