我正在尝试在我的代码中打开错误报告。我的PHP版本是5.3.6。
当我使用以下代码时,我看到错误通知:
<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
sample_error
?>
即使在注释行 2 之后,
error_reporting(E_ALL);
但是当我删除结束标签时,我只能看到空白页。
我不想再次开始关于关闭/不关闭PHP标签的圣战。我只想知道,这对错误报告有什么影响,因为几个月来每天用 PHP 编程,在运行有/没有它的脚本时,我没有注意到任何类似的差异。
编辑:现在我注意到,当我在"sample_error"测试线之后加上回声时
<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
sample_error
echo 'test';
?>
再次我只能看到空白页。我很困惑...
编辑2:我提到的通知:
Notice: Use of undefined constant sample_error - assumed 'sample_error' in /home/hozanie/public_html/testy/error_report.php on line 5
您应该会收到一个解析错误,最后没有?>
。这是因为 php 解析器试图纠正用户错误的方式。
当末尾有一个?>
时,解析器会识别带有未声明常量的最后一行"(这就是解析器sample_error
的样子),并简单地将其转换为字符串"sample_error"
。在 php 中,您可以将字符串文字作为语句,这不是解析错误,基本上结束?>
也充当;
。您应该看到如下所示的内容:
注意:使用未定义的常量sample_error - 假设 "sample_error"
现在,如果没有结束?>
解析器不会将文件结尾识别为"当前语句的结束",因此您的sample_error
不会被自动更正为字符串文字,并且您最终会得到解析错误。如果使用 ;
关闭最后一条语句,则会返回到上一个纠错行为。在我的 php 5.4.17 系统上,它打印:
PHP 解析错误:语法错误、文件意外结尾
(我不确定这本身是否是一个错误更正,我已经看到很多 php3 代码具有类似的$array[somestuff]
,这可能是一些向后兼容性功能)。