Как заставить мой сеанс писать в apache

Недавно я переключил серверы, и теперь моя домашняя страница не будет работать. Он дает следующий текст:

Warning: session_start() [function.session-start]: open(/var/lib/php/session/sess_eqbchncji8kj22f0iqa9g3v7u2, O_RDWR) failed: Permission denied (13) in /var/www/vhosts/alt.alternativedc.com/httpdocs/index.php on line 6 Warning: Unknown: open(/var/lib/php/session/sess_eqbchncji8kj22f0iqa9g3v7u2, O_RDWR) failed: Permission denied (13) in Unknown on line 0 Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0 

Я предположил, что это означало, что папка сеанса не была доступна для записи, поэтому после запуска ssh-ed на сервер я выполнил следующую команду:

 chmod o+rw /var/lib/php/session 

Это, похоже, не решило проблему. Не уверен, что делать сейчас …

Попробуйте изменить путь сохранения сеанса в файле конфигурации php, / tmp – хорошее место.

php.ini

 session.save_path = /tmp 

http://www.php.net/manual/en/session.configuration.php#ini.session.save-path

Так же была проблема с CentOS:

 chown -R apache:apache /var/lib/php/session 

Создание пользователя httpd также должно работать с каталогом сеанса.

Вероятно, вы изменили разрешения родительской папки рекурсивно, скорее всего, своим собственным пользователем.
Перейдите в папку сеансов:
cd ~;cd /var/lib/php/

Если вы найдете папку сеансов, просто напишите эти две команды в своем терминале:
cd ~; идти домой, потом
sudo chown -R www-data:www-data /var/lib/php/session

Или, если ваша папка сеансов является «сеансами» вместо «сеанса»:
cd ~; идти домой, потом
sudo chown -R www-data:www-data /var/lib/php/sessions

Таким образом, ваш сервер сможет записывать сеансы в ваш проект.
Я совершенно уверен в этом подходе.

оба из tmp и /var/lib/session должны быть chmod 1777

и проблема решена.

on ubuntu 12.04 / var / lib / php5 имеет разрешение 1733. Меняю в php.ini session.save_path на / tmp, чтобы правильно хранить сеансы, иначе вы можете установить параметр в свой код ini_set ('session.save_path', path_where_apache_have_permission_777);

Я пробовал все решения здесь, но они не работали, потому что php.ini был перезаписан другими конфигурациями.

Чтобы найти виновника, я использовал этот трюк :

grep -lR 'php_value' /etc/

И там это было /etc/httpd/conf.d/php.conf испортив его. Поэтому я изменил его значение с php_value session.save_path "/var/lib/php/session" на php_value session.save_path "/tmp" .

После перезагрузки Apache ( service httpd restart ) он наконец-то сработал!