我试图测试PHP(7.2)HTML错误报告。
我从http://php.net/download-docs.php下载了“Many HTML files”存档并将其解压缩到:
/home/user/public_html/php/manual/php-chunked-xhtml/
在apache的php.ini中我设置了:
error_reporting = E_ALL
display_errors = On
html_errors = On
docref_root = "/~user/php/manual/php-chunked-xhtml/"
docref_ext = .html
并重新启动了apache服务。
作为测试我做:
printf();
产量:
警告:printf()期望在第10行的/home/user/public_html/test/err.php中给出至少1个参数0
...但它没有链接到手册页。纯文本。
我在这做错了什么?如果没有printf()
的链接?
编辑:
phpinfo()
说设置与ini(上图)相同。我也尝试将手册移到/var/www/html/phpmanual
,但结果相同。我还补充道
ini_set("html_errors", true);
到测试文件,但结果没有变化。
手册是可浏览的。
至于我的期望。每个手册有:
html_errors布尔值
如果启用,错误消息将包含HTML标记。 HTML错误的格式产生可点击的消息,这些消息将用户引导到描述导致错误的错误或功能的页面。这些引用受docref_root和docref_ext的影响。如果禁用,错误消息将仅为纯文本。
以为我会得到一个链接到printf()
的例子。
确定最终找到了 - HTML错误消息不包含所有可能错误的链接。例如:
strcmp();
生成警告:
警告:strcmp()需要2个参数,给定0
但是没有指向strcmp()函数页面的链接,即使文档包中存在一个。 (function.strcmp.html)
但是,这段代码:
preg_match('/', null);
还会产生警告:
警告:preg_match()[function.preg-match.html]:找不到结尾分隔符'/'
但这个确实包括链接。不确定区别是什么,因为它们都是E_WARNING级别的消息,并且两者都有doc页面。