Я недавно обновился до 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, и приложение работает нормально. Что заставляет меня задуматься, под каким пользователем запускается сборщик мусора сеанса?
Ответы:
Исправление: В вашем
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, также пытаются выполнить сборку мусора, что приводит к полученной вами ошибке.
источник
session.gc_probability
уже установлен0
.session.gc_probability
спусковые до 1. Это произошло даже тогда , когда нет никаких настроек в файле php.ini бы то ни было ! Я запускаю suphp на Ubuntu, Apache 2.2. Интересно, это какая-то ошибка? В любом случае, добавлениеsession.gc_probability = 0
в мой собственный файл php.ini для конкретного сайта решает проблему.Это типичная ошибка на серверах 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 :
источник
Решение, которое я в настоящее время использую (которое я не уверен, является правильным), заключается в передаче права собственности на папку сеанса пользователю Apache (www-data в моем случае).
источник
Эта проблема уже давно меня беспокоит. Я изменил значение, как предложено в php.ini, и проблема продолжала возникать. Я нашел такое же значение конфигурации в моем index.php, а также в private / Zend / session.php. Так что стоит посмотреть немного глубже, если проблема продолжает возникать. Надеюсь, это кому-то пригодится.
источник