2011-01-22 69 views
2

我在本地运行的Apache/PHP和在很多情况下会收到错误,比如未初始化变量 - 但我注意到有一个少数情况下,我没有收到错误消息,我想知道,如果这是正常的,或者如果我对任何事情错过了,不接收某些PHP错误信息

<?php 

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

$1a = "Hello world!"; 
echo $1a; 

?> 

而且不产生错误:

<?php 

ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 

function a() 
{ 
$b = 5; 
echo $b; 
}} 

a(); 

?> 

,此脚本产品PHP错误,因为它应该哟ü?如果是这样,我想知道为什么我没有收到。这不是我可能会犯的错误,但是在其他时候,我收到了上面的空白页面,我想要某种反馈。

+0

有你`检查的phpinfo()`,看看这些函数ini_set调用真正获得成功。如果他们这样做,“本地设置”将显示1/e_all。但是否则,是的,您应该从该代码段中获取通常的“意外的T_LNUMBER”错误。 – 2011-01-22 01:45:06

回答

3

您对ini_set调用从未得到执行,因为错误的解析阶段会发生(任何被执行,即前)。您需要先在.htaccess,httpd.conf或php.ini中设置这些配置值。

+0

这解释了它。在我的php.ini我已成立“显示错误”,“关”,并删除“使用error_reporting”,这样我可以模仿设立多个远程主机,不显示错误。现在我将在.htaccess中设置它,而不是在开发任何PHP脚本时开始。 – Shane 2011-01-22 02:09:37

2

打开php.ini,CTRL-F为display_errors - 是否设置为开?当我安装php时,我使用ini_set();来尝试查看错误,但它不起作用,但编辑php.ini文件起作用。

编辑:我查看了您发布的页面上的phpinfo()输出,并将其设置为关闭。如果可以,请打开它。如果我没有记错,您必须在编辑后重新启动Apache。

EDIT2:在你php.ini文件,error_reporting应设置为E_ALL & ~E_NOTICE(默认),E_ALL | E_STRICT(发展),或E_ALL & ~E_DEPRECATED(生产)。老实说,这对我来说都是胡言乱语 - 但如果它有帮助,我的设置为E_ALL & ~E_DEPRECATED,并且我从您的代码中收到错误。

+0

是的,这工作,但自从其他人解释了PHP的行为现象,我给了它答案。 – Shane 2011-01-22 02:11:48