Недавно я переключил серверы, и теперь моя домашняя страница не будет работать. Он дает следующий текст:
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
) он наконец-то сработал!