В самом простом из возможных кодов
<?php
$ok = session_start();
echo var_dump($ok);
?>
запуск сеанса завершается неудачно, $ok
- false, и файл cookie сеанса не создается. Аналогично, присвоение имени сеансу session_name('xxx');
не имеет никакого эффекта. Переменная $_SESSION
также не сохраняет значения, если она установлена в другом скрипте.
Другие устаревшие сценарии на том же сервере, которые используют функцию сеанса, работают должным образом. Тот же скрипт отлично работает при запуске на localhost.
Шаги, которые я сделал во время анализа ошибок, где:
- Я удалил имя сессии и все остальное, чтобы получить скрипт выше (минимальный пример воспроизводит ошибку).
- Я проверил журнал ошибок, который предлагает мой провайдер, но запись вообще не была найдена
- Я убедился, что никаких дополнительных пробелов нет, и все сценарии немедленно начинаются с
session_start()
.
- В том же сценарии я показал
phpinfo()
, чтобы отметить, что:
Session Support: enabled
session.auto_start: Off
session.use_cookies: 1
session.use_only_cookies: 1
(оспаривается, но поскольку другие скрипты работают ...)
- Я начал сомневаться в моем здравомыслии.
- Я вспомнил, как сталкивался с "невидимыми символами" в виде меток порядка следования байтов в текстовых файлах ранее и полагал, что, возможно, что-то вроде кодирования может быть проблемой (см. Ответ ниже) ...
Каковы дополнительные источники ошибок, которые могут вызвать эти симптомы?