Случается, когда ваш скрипт пытается отправить HTTP-клиенту клиенту, но он уже был выведен ранее, что привело к тому, что заголовки уже отправлены на клиент.
Это E_WARNING
, и он не остановит сценарий.
Типичным примером может быть файл шаблона, подобный этому:
My Page
...
Функция session_start()
попытается отправить клиенту файлы cookie сеанса. Но PHP уже отправил заголовки, когда он написал элемент в выходной поток. Вам нужно будет переместить
session_start()
в верхнюю часть.
Вы можете решить эту проблему, пройдя через строки до код, запускающий предупреждение, и проверьте, где он выдается. Переместите любой заголовок, отправляющий код перед этим кодом.
Часто пропускаемый вывод - это новые строки после закрытия PHP ?>
. Считается стандартной практикой опускать ?>
, когда это последняя вещь в файле. Аналогичным образом, еще одной распространенной причиной этого предупреждения является то, что перед открытием перед ним появляется пустое пространство, строка или невидимый символ, в результате чего веб-сервер отправляет заголовки и пробел / новую строку, таким образом, когда PHP начинает синтаксический анализ, он не сможет для отправки любого заголовка.
Если в вашем файле содержится более одного кодового блока , у вас не должно быть пробелов между ними. (Примечание: у вас может быть несколько блоков, если у вас есть код, который был автоматически сконструирован)
Также убедитесь, что в вашем коде не указаны знаки байтового заказа, например, когда кодировка скрипта является UTF -8 с BOM.
Вопросы, относящиеся
Это не ограничение переменной среды, а скорее командный процессор.
Включают все присвоение в кавычки:
set "myvar=http://example.com?foo=1&bar="
, Хотя, при попытке повторить это, это будет жаловаться, поскольку оболочка будет видеть повреждение там.
можно отозваться эхом, это путем включения var называет в кавычках:
echo "%myvar%"
Или лучше, просто используйте команду набора для просмотра содержания:
set myvar
Я думаю, что это должно сделать это:
for /f "tokens=*" %i in (%myvar%) do set %myvar%=%~i
, Но Вам не нужно, это,
set myvar="http://example.com?foo=1&bar="
start "" %myvar%
будет работать также, просто необходимо предоставить заголовок к команде запуска.
Используйте отложенное раскрытие переменной среды и используйте! Var: ~ 1, -1! чтобы удалить кавычки:
@echo off
setlocal enabledelayedexpansion
set myvar="http://example.com?foo=1&bar="
set myvarWithoutQuotes=!myvar:~1,-1!
echo !myvarWithoutQuotes!