возможно ли использовать session_start () внутри включаемого файла?

#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 постарайтесь убедиться, что вы не видите никаких странных символов