我正在尝试在代码中打开错误报告。我的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
答案 0 :(得分:3)
如果最后没有?>
,您应该得到一个解析错误。这是因为php解析器试图纠正用户错误的方式。
当最后有一个?>
时,解析器会识别带有未声明常量的最后一行“(这是解析器的sample_error
看起来像)并简单地将它转换为字符串{{ 1}}。在php中,你可以将字符串文字作为语句,这不是解析错误,基本上结束"sample_error"
也可以作为?>
。你应该看到这样的东西:
注意:使用未定义的常量sample_error - 假设 'sample_error'
现在没有结束;
,解析器无法将文件结束识别为“当前语句结束”,因此您的?>
无法自动更正为字符串文字,你最终得到一个解析错误。如果您使用sample_error
关闭最后一个语句,则会返回到先前的错误更正行为。在我的系统上使用php 5.4.17打印:
PHP Parse错误:语法错误,意外的文件结尾
(我不确定这是否是一个错误纠正本身,我已经看到很多像;
的php3代码,这可能是一些向后兼容的功能。)