Автоматический поиск grep для спецификации с Невозможно изменить заголовки информации заголовка, уже отправленные

Предупреждение: Невозможно изменить информацию заголовка — заголовки уже отправлены by (вывод начался с example.php: 1)

Похоже, что этих вопросов неограниченное количество, и они продолжают поступать. Я согласен, что в большинстве случаев ответ является там уже.

Я столкнулся с той же проблемой сам. В выводе был загадочный персонаж, который мешал мне устанавливать заголовки. Поскольку это было большое приложение, в котором было много файлов, поиск каждого из них не был возможен.

Я считаю, что проблема связана с спецификацией или дополнительным пространством до <?php открывающий тег где-то в одном из включенных файлов. Когда я открываю файл, указанный в сообщении об ошибке, похоже, что в этом нет ничего плохого.

Как мне найти, где проблема?

0

Решение

Вот автоматизированное решение, которое помогло мне отследить этого персонажа. Требуется доступ по 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 flag инвертирует результаты поиска и выводит то, что не соответствует выражению. Таким образом, если файл имеет 1000 строк, из которых только первая <?php открывающий тег, который выведет все 999, потому что они не соответствуют регулярному выражению. Поскольку мне нужно взглянуть только на первую строку, я перенаправляю вывод greps в другой grep, который фильтрует результаты еще раз и гарантирует, что я получаю строки с другим условием, которое я прохожу, — опять же, открывающий тег. Это обходной путь, который ограничивает вывод greps только первой строкой.

Надеюсь это поможет

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]