加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

是否可以确定哪个PHP文件生成了一些输出

发布时间:2020-12-13 22:52:01 所属栏目:PHP教程 来源:网络整理
导读:偶尔我会遇到一个问题,即某个大型系统某处的 PHP文件在某些??情况下会产生虚假输出. 这可能是因为有人在?php开启标记之前意外键入了空格或其他字符,或者在最终关闭后留下了不需要的调试回音或包含了一些空格?标签. 有没有办法生成一个日志,显示生成一些输
偶尔我会遇到一个问题,即某个大型系统某处的 PHP文件在某些??情况下会产生虚假输出.

这可能是因为有人在<?php开启标记之前意外键入了空格或其他字符,或者在最终关闭后留下了不需要的调试回音或包含了一些空格?>标签.

有没有办法生成一个日志,显示生成一些输出的所有PHP文件,以及它们生成的输出?

如果没有,有没有其他方法可以建议追踪我描述的问题?

编辑:澄清一下 – 我正在运行的系统是Moodle(不是直接相关的,但是当它被问到……)而且,在这种情况下,输出是在数据库升级期间(但我有随机的类似问题)其他时间输出的字符).有大量不同的PHP脚本被加载到内存中以生成页面,因此手动发现生成不需要的输出的脚本并不是一个非常诱人的前景……

解决方法

如果您的“唯一”关注是php标签之外的文本 token_get_all()可能对您有所帮助. php标签外的所有内容(?)都报告为T_INLINE_HTML(312),因此很容易过滤.
例如.

<?php
for($t=0;$t<10; $t++) { ?>

<?php
}
?>

<?php
$at = token_get_all( file_get_contents(__FILE__) );
foreach($at as $t) {
    if ( is_array($t) && T_INLINE_HTML===$t[0]) {
        echo 'inline html @ line ',$t[2],"rn";
    }
}

打印(一些空行和)

inline html @ line 3
inline html @ line 7

将它与get_included_files()或RecursiveDirectoryIterator这样的东西结合起来,你有一个小小的临时工具来完成任务.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读