Я столкнулся с проблемой, когда загрузил исходный код на хостинг.
На моих страницах HTML/PHP у меня есть код, подобный следующему:
<!DOCTYPE html>
<html lang = "es">
<?php
session_start();
....
....
?>
Если я запускаю страницу на своем локальном хосте с display_errors=On... я не получаю никаких ошибок для сеанса, но если я запускаю страницу на хостинге (с той же версией PHP), я получаю эту ошибку:
Warning: session_start(): Session cannot be started after headers have already been sent in
Эта ошибка не позволяет мне получить переменную $_SESSION, поэтому я не могу продолжить.
Я пытаюсь выполнить репликацию в своей локальной среде, но не могу настроить сервер на такое же поведение.
Я определил, как это решить (переместив <!DOC....> после команды session_start()), но мне хотелось бы понять, как воспроизвести эту проблему в моей среде.
Есть ли какая-либо конфигурация PHP.ini или Apache, которой мне не хватает в моей локальной среде?
Заранее спасибо.
Я пытался изменить параметры в PHP.ini, но мне не удалось воспроизвести поведение среды хостинга.
В вашей локальной среде, вероятно, для output_buffering установлено значение on
(или определенное количество байтов), что предотвратит эту ошибку, поскольку заголовки отправляются только тогда, когда отправляется первый байт выходных данных, и благодаря его буферизации это не произойдет. произошли уже во время вызова session_start.
С уважением @CBroe, я умею копировать!!!
PHP даже не знает, что такое «<!DOCTYPE html>».
<?php
session_start();
?>
<!DOCTYPE html>
<html lang = "es">
<head>
<meta charset = "UTF-8">
<title>My Page</title>
<!-- Other head elements -->
</head>
<body>
<!-- Your content here -->
</body>
</html>
попробуйте этот код.
Примечание:
session
должен стоять перед любым выводом браузера, это часть документации PHP. Помимо этого, есть ли у вас действительныйsession.save_path
в вашем локальном файле .ini?