我希望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特定的问题。有什么想法吗?
答案 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_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);
有关详细信息,请参阅以下答案:
答案 7 :(得分:-1)
试试这个。
error_reporting(E_ALL);
ini_set("display_errors", 1);