PHP - 没有关闭标签的错误报告

时间:2013-10-22 18:38:44

标签: php error-handling tags

我正在尝试在代码中打开错误报告。我的PHP版本是5.3.6。

当我使用以下代码时,我会看到错误通知:

<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
sample_error
?>

即使在评论第2行之后,

error_reporting(E_ALL);

但是当我删除结束标记时,我只能看到空白页。

我不想再次开始holy war about closing/not closing PHP tags。我只是想知道,这有什么错误报告,因为在PHP中每天编程几个月我没有注意到有/没有它运行脚本时有任何类似的差异。

修改: 现在我注意到当我把“sample_error”测试线放在echo

之后
<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
sample_error
echo 'test';
?>
再次,我只能看到空白页面。我很困惑......

EDIT2 : 我提到的注意事项:

Notice: Use of undefined constant sample_error - assumed 'sample_error' in /home/hozanie/public_html/testy/error_report.php on line 5 

1 个答案:

答案 0 :(得分:3)

如果最后没有?>,您应该得到一个解析错误。这是因为php解析器试图纠正用户错误的方式。

当最后有一个?>时,解析器会识别带有未声明常量的最后一行“(这是解析器的sample_error看起来像)并简单地将它转换为字符串{{ 1}}。在php中,你可以将字符串文字作为语句,这不是解析错误,基本上结束"sample_error"也可以作为?>。你应该看到这样的东西:

  

注意:使用未定义的常量sample_error - 假设   'sample_error'

现在没有结束;,解析器无法将文件结束识别为“当前语句结束”,因此您的?>无法自动更正为字符串文字,你最终得到一个解析错误。如果您使用sample_error关闭最后一个语句,则会返回到先前的错误更正行为。在我的系统上使用php 5.4.17打印:

  

PHP Parse错误:语法错误,意外的文件结尾

(我不确定这是否是一个错误纠正本身,我已经看到很多像;的php3代码,这可能是一些向后兼容的功能。)