Невозможно изменить имя файла cookie сеанса php - PullRequest
7 голосов
/ 24 октября 2010

Я скопировал существующий и успешно работающий сайт на новый сервер разработки.

Теперь логин на новом сервере поврежден, и я отследил его до того факта, что хотя сессионный cookie переименован ...

ini_set('session.name', 'DOMAIN1');

... браузер сохраняет cookie-файл ssssion как PHPSESSID.

Когда я удаляю вышеуказанную строку из приложения на новом сервере, логин снова работает. Но это не очень хорошее решение, потому что другое приложение также использует PHPSESSID под этим именем.

И я предпочел бы найти причину странного поведения вместо использования обходного пути. Если я не исправлю это, это может укусить меня где-нибудь еще.

Может быть, этой информации уже достаточно, чтобы кто-нибудь дал мне подсказку. Если нет, какая информация будет полезна?

Эта машина была очень простым и простым сервером ubuntu 8.04, и я установил apache2, mysql и php5 с помощью aptitude. Я также обновил lokales и часовой пояс.

Решение:

Я заменил строку выше этим кодом из принятого ответа ...

if(ini_set('session.name', 'DOMAIN1') === false || !session_name('DOMAIN1'))
{
    die('Unable to set sesssion scope');
}

... и теперь логин работает на новом сервере.

1 Ответ

8 голосов
/ 24 октября 2010

Иногда ini_set воспроизводится и не может правильно установить значения ini, возможно, отсутствуют разрешения.

нижеприведенное не полностью решает проблему с ini_set, и если кто-то знает причину (ы), почему ini_set не работает на хостах некоторых типов, тогда поделитесь!

Попробуйте следующее:

<?
if(ini_set('session.name', 'DOMAIN1') === false || !session_name('DOMAIN1'))
{
    die('Unable to set sesssion scope');
}

phpinfo();
?>

в качестве альтернативы вы можете просто использовать session_name() для его установки, и я всегда советую вам не просто запускать функции и надеяться, что всегда проверять оператор if и подготовиться к наихудшему сценарию, то есть когда ваше приложение станет надежным и меньше error_prone.

...