Zend Framework:无论ini文件如何,都会关闭错误报告

当变量/属性的类型错误时,我经常遇到问题。 问题在于它很难追踪,因为我的PHP(5.3)刚刚崩溃,没有发出错误,甚至没有写入错误日志(* 1)。 它只是崩溃。

我认为访问像数组这样的字符串不应该是难以追踪的吗? 我的意思是,PHP不是对的?

有没有办法改变这种行为或某种最佳实践来解决这个问题? 除了始终检查每个变量,因此写入5倍以上的代码?

[更新] :好的,如果我简化了Zend之外的代码,它似乎工作。 它肯定是Zend相关的。 虽然我确实在我的application.ini中设置了所有phpSettings:

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
phpSettings.error_reporting = "E_ALL|E_STRICT"

导致错误的代码(在我刚刚尝试的沙箱中工作)是这样的:

$prefix = (strpos($obj[3][1], 'videometa') !== false) ? "http://www7.example.org" : "http://www.example.org";

$ obj是一个json字符串。

[更新2] :所以我尝试使用ini_get在我的代码上方回显php设置,并且它说错误报告位于E_ALL | E_STRICT,display_error为ON等。

所以这:

echo '<br/>ini_get = '.ini_get('display_errors').';';
echo '<br/>ini_get = '.ini_get('error_reporting').';';
echo '<br/>ini_get = '.ini_get('error_log').';';
echo '<br>$obj: ';
$obj = 'peter';
var_dump($obj);

echo '<br/>Now for the critical code:';
$prefix = (strpos($obj[MC_IMAGETYPE_VDT][1], 'videometa') !== false) ? "http://www7.example.org" : "http://www.example.org";

echo '<br/>It never shows this!';

提出这个:

ini_get = 1;
ini_get = E_ALL|E_STRICT;
ini_get = /Applications/MAMP/logs/php_error.log;
$obj: string(5) "peter"

Now for the critical code:

然后停止。 有任何想法吗?

* 1。 php.ini有display_errors = On和error_reporting = E_ALL等等。 都好。


我不认为你用来设置错误报告的方法是正确的,你应该将它设置为一个字符串值,当它应该是数字(或者是一个常数,例如具有数值的E_ALL)。 尝试只是:

phpSettings.error_reporting = E_ALL|E_STRICT

(即没有引号)或者:

phpSettings.error_reporting = 32767

如果一切都失败了,你总是可以临时将错误报告值设置在你认为会导致问题的代码之上:

error_reporting(E_ALL);

还有,你有:

$prefix = (strpos($obj[MC_IMAGETYPE_VDT][1], 'videometa') !== false) ? "http://www7.example.org" : "http://www.example.org";

但是$obj是一个你试图作为嵌套数组访问的字符串。 这会给你Fatal error: Cannot use string offset as an array ,这可能是你的代码失败的原因。

链接地址: http://www.djcxy.com/p/58907.html

上一篇: Zend Framework: Error Reporting is shut down regardless of ini File

下一篇: Xcode warning: "Multiple build commands for output file"