警告:无法修改标头信息 - 标头已由 发送(输出从示例.php:1开始)
看起来这些问题的数量是无限的,而且它们不断出现。我同意在大多数情况下,答案已经在那里。
我自己也遇到了同样的问题。输出中有一个神秘字符阻止我设置标题。由于它是一个包含大量文件的大型应用程序,因此无法浏览每个文件以搜索它。
我相信问题是由于 BOM 或其中一个包含文件中某处的<?php
开始标签之前的多余空格造成的。当我打开错误消息中提到的文件时,看起来没有任何问题。
如何找到问题所在?
这是帮助我追踪该角色的自动化解决方案。需要 SSH 访问权限。
grep -v -R "^<?php" /home/public_html/ --include '*.php | grep "<?php"
grep
是一个非常有用的工具,能够递归搜索文件和文件夹内容。
-
-v
表示排除,即输出与我稍后传递的正则表达式匹配的任何内容相反的
输出 -
-R
的意思是递归的,即在提供的文件夹内及其子目录中搜索 -
"^<?php"
是匹配以 PHP 开始标记前面的行 (^
) 的表达式。同样,-v
用于反转这一点,所以我得到了没有的行 - 这就是我所追求的。 -
/home/public_html/
是包含我所有网站文件的文件夹 -
--include '*.php
我们仅在.php文件中搜索 -
grep "<?php"
是一个仅捕获文件第一行的技巧
问题是,-v
标志反转搜索结果并输出与表达式不匹配的任何内容。因此,如果一个文件有 1000 行,只有第一行是<?php
开始标记,这将输出所有 999 行,因为 thouse 与正则表达式不匹配。由于我只需要查看第一行,因此我将 greps 输出转发到另一个 grep 中,该 grep 再次过滤结果并确保我获得具有我传递的另一个条件的行 - 这又是开始标签。这是一种解决方法,它将 greps 输出限制为仅第一行。
希望这有帮助