php сессия и настройка пути - PullRequest
0 голосов
/ 14 июля 2009

Я хотел бы разделить мои исходные папки на две: папки, содержащие код, который вы вводите в адресную строку, и те, которые составляют части страницы (плитки) и другой код (классы и т. Д.). Поэтому в начале каждого php-файла я добавил:

<?php
// index.php
include("config.php");
include("session.php");
?>

Config содержит только это, но позволяет мне расширяться, если мне нужны другие каталоги (журналы и т. Д.)

<?php
// config.php
$_PATHS["base"]      = dirname(dirname(__FILE__)) . "\\";
$_PATHS["includes"]  = $_PATHS["base"] . "includes\\";
ini_set("include_path", "$_PATHS[includes]");
?>

И сессия, помимо прочего, в конструкторе вызывает session_start. Это также требует других классов, которые включены в другом месте - что требует перечисления конфигурации перед включением сеанса. Однако я получаю ошибку

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started ...

Если я включу включения, эта конкретная ошибка исчезнет, ​​но мне нужно начать вручную обрабатывать ссылки на файлы заголовков. Есть ли способ установить каталоги в первую очередь и при этом использовать сеансы, или session_start должен быть первым, что включает файл?

Ответы [ 2 ]

3 голосов
/ 14 июля 2009

Остальная часть этой ошибки - точный бит , который скажет вам, где проблема! Скорее всего, у вас есть пробелы в конце config.php.

(Либо так, либо session.php отправляет вывод перед вашим вызовом на session_start(), но я сейчас просто догадываюсь:)

1 голос
/ 14 июля 2009

Я не знаю, пытались ли вы уже это сделать, но для проверки удалите файл config.php и вставьте туда код конфигурации.

Итак, это:

<?php
// index.php
include("config.php");
include("session.php");
?>

становится таким:

<?php
// config
$_PATHS["base"]      = dirname(dirname(__FILE__)) . "\\";
$_PATHS["includes"]  = $_PATHS["base"] . "includes\\";
ini_set("include_path", "$_PATHS[includes]");
//index
include("session.php");
?>

Если это работает, значит, у вас проблема с файлом config.php * [см. Ниже], если это не так, указывает ли ошибка на строку ini_set? [исходя из вышеприведенного комментария, именно здесь текущая ошибка указывает]

* Я помню, как однажды читал [некоторое время назад, я признаю], что файл UTF-8 может испортить сессии. Пытаюсь найти ссылку

Хорошо, я нашел кого-то, кто отправил отчет об ошибке, касающейся UTF-8 и session_start. По-видимому, это не ошибка - я не разбирался в причинах - но в любом случае это не совсем та же проблема. Тип кодировки UTF-8 действительно вызывает ошибки сеанса, но не ошибку cookie, которую вы получаете. Смотрите здесь, если вы заинтересованы - Ошибка UTF-8

...