2009-10-22 80 views
2

在这里的开发服务器上,一个设置已经改变,这使得任何PHP错误(任何级别)只输出错误消息,没有别的。为了证明我的意思是,这里有一个脚本来重现错误:PHP错误显示删除所有其他内容

<?php 
$array = array('a'); 
echo "Hello world"; 
echo $array[1]; 
echo $array[2]; 
echo "Goodbye world"; 
?> 

我期望从这个“世界,你好”,然后两个PHP声明说,有一个未定义的数组中的偏移量,然后“再见世界”。我真正看到的是:

PHP Notice: Undefined offset: 1 in /path/to/myfile.php on line 4 
PHP Notice: Undefined offset: 2 in /path/to/myfile.php on line 5 

...没有别的。 (也请注意,它是纯文本的,不是HTML)。当然,我可以设置error_reporting(0),但是我没有看到任何错误。

有谁知道PHP设置会控制这个?

+1

+1 - 就遇到了这个最近一个客户的服务器上,从来没有根了出来。我只是修复了一些错误,一切都很好。奇怪的是,print_r()和类似的工作,只是没有其他输出。 – 2009-10-22 02:33:26

+0

+1 - @tinkertim我也是。 – 2009-10-22 02:39:23

回答

1

我的猜测是输出缓冲已打开。尝试:

<?php 
$array = array('a'); 
echo "Hello world"; 
ob_flush(); 
echo $array[1]; 
echo $array[2]; 
echo "Goodbye world"; 
?> 
+0

nope - 对输出没有任何影响 – nickf 2009-10-22 02:24:24

0

您需要关闭警告,并获取致命错误。这应该这样做:

error_reporting(E_ERROR | E_WARNING | E_PARSE);

或该:

的error_reporting(E_ERROR | E_PARSE);

错误报告方法在此处取一个整数,并且管道字符将它们的基础整数值逐位或逐位排列,以实现传递给该函数的最终整数。

http://74.125.155.132/search?q=cache:QvgitR0nX34J:php.net/manual/en/function.error-reporting.php+php+fatal+error+reporting&cd=1&hl=en&ct=clnk&gl=us

+0

正如我在OP中所说的,摆弄'error_reporting'层意味着我可以看到我的输出,但它不会告诉我是否有任何通知。我希望看到这些错误,但不要让它们隐藏其他所有内容。 – nickf 2009-10-22 03:30:11

+0

错误可能只是打破你的html/css/javascript(ui输出)。修复错误。你为什么不想首先解决它们? – David 2009-10-28 01:33:26