Проблемы с PHP 5.3 и папкой сессий - PullRequest
80 голосов
/ 25 мая 2010

Я недавно обновился до PHP 5.3, и с тех пор я получаю (спорадические) сообщения об ошибках, которые указывают, что Apache (или может быть очистителем файлов сеансов) не имеет разрешений для папки, в которой хранятся сеансы.
Это происходитслучайно и не может быть воспроизведено с точными шагами, что заставило меня предположить, что это очиститель сеанса.
Кто-нибудь имеет какой-либо опыт с такими ошибками?

Сообщение об ошибке (которое выдается на session_start() строка):

ps_files_cleanup_dir: opendir (/ var / lib / php5) не удалось: разрешение отклонено.

ls -ltr в каталоге сеанса дает:

drwx-wx-wt  2 root          root          4096 2010-05-25 12:39 php5

Внутри этого каталога я вижу файлы сеансов, принадлежащие www-data, который является моим Apache, и приложение работает нормально.Что заставляет меня задуматься, под каким пользователем запускается сеанс GC?

Ответы [ 4 ]

120 голосов
/ 01 июня 2010

Исправление: В вашем php.ini значении session.gc_probability установлено 0

Причина Я думаю, что нашел ответ здесь http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbage

По сути, сборка мусора настраивается для выполнения заданиями cron в некоторых системах (например, Ubuntu / Debian). Некоторые исполняемые файлы php ini, такие как php-cli, также пытаются выполнить сборку мусора, что приводит к полученной вами ошибке.

22 голосов
/ 04 ноября 2011

Это типичная ошибка на серверах Ubuntu (я использую Lucid LTS). Разрешения по умолчанию для каталога / var / lib / php5:

drwx-wx-wt  2 root     root     4096 2011-11-04 02:09 php5

так что он может быть записан, но не прочитан веб-сервером, я думаю, это объясняет ошибки.

Поскольку в Ubuntu есть своя собственная очистка мусора с помощью cron (/etc/cron.d/php5), вероятно, лучше отключить сборку мусора в php, как предложено выше Дивантом Вайдей.

session.gc_probability = 0

Существует причина, по которой папка сеанса не должна быть доступной для чтения всем, как указано в PHP Manual :

Если вы оставите этот набор в общедоступном каталоге, таком как / tmp ( по умолчанию), другие пользователи на сервере могут перехватывать сессии получение списка файлов в этом каталоге.

1 голос
/ 26 мая 2010

Решение, которое я в настоящее время использую (которое, я не уверен, является правильным), заключается в том, чтобы передать право собственности на папку сеанса пользователю Apache (www-data в моем случае).

0 голосов
/ 03 июля 2016

Эта проблема меня давно беспокоила. Я изменил значение, как предложено в php.ini, и проблема продолжала возникать. Я нашел такое же значение конфигурации в моем index.php, а также в private / Zend / session.php. Так что стоит посмотреть немного глубже, если проблема не исчезнет. Надеюсь, это кому-нибудь пригодится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...