#php #session #header
#php #сессия #заголовок
Вопрос:
У меня есть 2 страницы, одна из которых index.php другое — classes.php
разве это не должно работать classes.php:
<?php
ob_start();
session_start();
?>
index.php:
<?php
include "classes.php";
error_reporting(E_ALL);
echo "Loaded";
?>
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /public_html/index.php:1) in /public_html/includes/classes.php on line 2
Ответ №1:
Убедитесь, что перед открывающим <?php
тегом в ваших классах и индексных файлах нет пробелов.
Ответ №2:
Убедитесь, что вы не отправляете ничего перед выполнением чего-либо, касающегося сеанса.
Это означает:
- удалите все, что было перед
<?php
, - удалите завершающие
?>
теги (они не обязательны и часто вредны),
Проблема, с которой вы столкнулись, вызвана чем-то, что находится перед « <?php
» внутри index.php
файла (это может быть пробел, табуляция, конец строки или что-либо еще, что вы нам не показали), но если вы будете следовать приведенным выше правилам, у вас должна возникать эта проблема намного реже при дальнейшей разработке вашего приложения.
Ответ №3:
Это не проблема с включением — у вас где-то есть пробелы, возможно, в classes.php после ?>
.
Ответ №4:
output started at /public_html/index.php:1
Очевидно, у вас есть пробел (или, возможно, содержимое) перед тегом PHP start в вашем index.php файл, который отправляется в качестве выходных данных.
Ответ №5:
проверьте свой php.ini и посмотрите, session.auto_start
установлено ли у вас значение 1 (или true, или yes).
Если вы хотите запустить сеанс вручную, для него должно быть установлено значение 0
Больше информации здесь:http://www.php.net/manual/en/session.configuration.php#ini.session.auto-start
если для него уже установлено значение 0, то у вас есть пробел или новая строка в начале index.php постарайтесь убедиться, что вы не видите никаких странных символов