У меня была такая же проблема. Похоже, проблема в том, как Apache возвращает данные сеанса для IE7 и IE8, но, скорее всего, потому что IE7 и IE8 имеют неправильный способ объявления домена, для которого запрашиваются данные сеанса.
Вот мой сценарий:
Запуск Apache 1.3 с двумя доменами, каждый из которых имеет свою учетную запись со своими пользователями:
Domain: mycompany.com
Session path: /tmp/
Webserver user: mycompanycom
Domain: support.mycompany.com
Session path: /tmp/
Webserver user: nobody
Вот что происходит во время обычного посещения Firefox / Safari / Chrome:
- Я захожу на mycompany.com, и файл сеанса создается в
/tmp/
, принадлежащем пользователю mycompanycom
.
- Затем я захожу на support.mycompany.com, и второй файл сеанса создается в
/tmp/
, принадлежащем пользователю nobody
.
- Apache не запутывается, и возвращаются правильные файлы сессии
Однако вот что происходит во время посещения IE7 и IE8:
- Я захожу на mycompany.com, и файл сеанса создается в
/tmp/
, принадлежащем пользователю mycompanycom
.
- Затем я захожу на support.mycompany.com и вместо создания второго файла сеанса в
/tmp/
, принадлежащего пользователю nobody
, Apache пытается вернуть файл сеанса для mycompany.com.
- Файл сеанса для mycompany.com принадлежит пользователю
mycompanycom
, поэтому веб-сервер, работающий от имени пользователя nobody
, не может получить к нему доступ. В доступе отказано.
Решением было, как другие предложили, создать отдельный каталог в /tmp/
, чтобы отделить сохраненные данные сеанса для support.mycompany.com:
mkdir /tmp/mycompany
chown nobody:nobody /tmp/mycompany
Затем я добавил следующее в .htaccess
файл в корневом веб-каталоге для support.mycompany.com:
php_value session.save_path '/tmp/mycompany'
И, наконец, я удалил все существующие данные сеанса в /tmp/
, чтобы обеспечить немедленное использование нового пути сеанса:
rm -f /tmp/sess_*
И это все! Теперь IE7 и IE8 работают правильно.
Я вполне уверен, что эта проблема связана с тем, как IE7 и IE8 запрашивают данные сеанса у Apache. Вероятно, они сначала запрашивают данные сеанса для mycompany.com, а затем запрашивают данные сеанса для support.mycompany.com, хотя последний был единственным доменом, введенным в адресную строку.