Быстрое и грязное исправление - активировать output_buffering
на вашем сервере, изменив файл php.ini (и перезапустив Apache) , установив что-то вроде этого:
output_buffering=4096
Ваша проблема в том, что HTTP-заголовки не могут быть отправлены, даже если был отправлен только 1 символ; используя эту директиву, вы указываете, что ничего не следует отправлять до того, как буферизуются 4 КБ данных.
Этого обычно достаточно, чтобы буферизовать некоторые пробелы, которые присутствуют в начале / конце файлов .php
, и этого достаточно, чтобы вызвать такую проблему.
Примечание: это быстрое и грязное исправление, но оно может помочь вам заставить приложение работать.
Конечно, лучшим решением было бы удалить любой вид вывода, который отправляется перед вызовом session_start /, или переместить вызов на session_start
в начало вашего PHP-скрипта.
Одна вещь, которая часто помогает, это удалить закрывающий тег ?>
в конце .php
файлов, чтобы после него не было пробелов, поскольку он больше не существует (да это совершенно верно)
РЕДАКТИРОВАТЬ после повторного просмотра заданного кода:
In header.php
:
- Вы делаете вывод (HTML-код, например, div "textarea")
- И только тогда вы начинаете сеанс с
session_start
- , поскольку некоторые выходные данные уже отправлены в браузер,
session_start
не может создать cookie и завершается ошибкой.
Итак, вам действительно нужно переместить session_start как можно выше : но это, например, в начале index.php
; или, может быть, чтобы получить его везде, на вершине functions.php
...
... Но точно НЕ в середине некоторого вывода HTML!
(То, что я говорил ранее о output_buffering, возможно, является причиной того, почему этот (не очень хороший) код работал раньше)
Это должно решить проблему, я думаю ...
В любом случае, удачи!