2010-10-23 5 views
7

Я скопировал существующий и успешно запущенный сайт на новый сервер разработки.Невозможно изменить имя файла cookie php

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

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

... браузер продолжает хранить sesssion печенье как 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'); 
} 

... и Войти теперь работает на новом сервере.

ответ

8

Иногда 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(), чтобы установить его, и больной всегда советую не просто запускать функции и надеемся, что всегда проверить в, если заявление и готовиться к худшему в случае, когда ваше приложение становится надежным и меньше error_prone.

+2

Нет, ini_set() не должен изменять файл INI: см. Http://php.net/ini_set. В противном случае это было бы большим потенциальным нарушением безопасности. – mojuba

+0

Да, извините, только время выполнения :) – RobertPitt

+0

Спасибо, после долгих поисков он наконец работает. Я заменил старый код 4 строками из вашего примера и исправил его! – mit

Смежные вопросы