Я испытываю очень странное поведение с PHP и сессией.
Сценарий, который я использую, работает в течение нескольких месяцев и работает на разных серверах с различными версиями PHP.
скрипт считывает URL-адрес и перенаправляет его в зависимости от URL-адреса, например, нажав /offer/abc1234.html, он вызовет предложение класса и передаст параметр abc1234 в качестве параметра.
Я создал класс «failover», который, другими словами, если вы напишете файл /abc1234.html, он проверит различные записи в базе данных, и если он найдет один, он автоматически включит этот класс, как если бы он был вызван по URL-адресу с небольшим количеством дополнительных накладных расходов, разница:
Теперь, учитывая, что все это работает и работает месяцами, моя проблема связана с сеансами.
если я удалю /offer/abc1234.html, я вижу набор сеансов и cookie, отправленный в браузер
если я нажму /abc1234.html, сессия будет настроена правильно, никаких ошибок (E_STRICT + E_ALL), никаких предупреждений, ничего нет, но cookie не будет отправлен в браузер. Я даже попытался напечатать $ _SESSION в конце скрипта, и сессия заполнена, и все вары верны, кроме заголовков.
Я попытался отладить его и добавить различные var_dump в разных местах, но ничто не отличается от другого, за исключением того, что header_list () никогда не содержит session_cookie, но он содержит другие файлы cookie, которые я вручную установил:
В настоящее время я печатаю:
результат выглядит примерно так:
Опять же, я схожу с ума, поскольку все работает раньше в тот же день, а затем я перезапустил апач, и он прекратил работать.
Я проверил сервер, и папка не заполнена, и она доступна для записи, и файлы создаются и пусты, когда я вызываю abcd1234.html
РЕДАКТИРОВАТЬ
во время работы над ним я начинаю открывать файлы через «ee» (редактор FreeBSD) непосредственно на сервере. Ничего не произошло, пока я не открыл / не сохранил класс, никаких изменений в файле не было, я случайно добавил пробел и удалил его, а затем, когда я вышел из редактора, попросил меня сохранить, и я сказал ДА.
PHP скомпилирован с eaccelerator, я уже удалил папку кэша, а также перезапустил apache и увидел, что папка автопопулята. Такой класс (failover.php) – это простая функция, в которой каждая функция является запросом, а затем конструкция вызывает каждую функцию по одному в то время.
Таким образом, кажется, что это работает, но я хотел бы знать, если кто-либо когда-либо испытал что-то подобное, и если бы они знали, что может быть проблемой