Как справиться с этой ошибкой «не удалось записать файл в сеансе» в PHP?

StackOverflow https://stackoverflow.com/questions/2823491

Вопрос

Я использую платформу Kohana 3 и собственный драйвер сеанса.

По какой-то причине сеансы иногда не могут записать свой файл.

Warning: session_start() [function.session-start]: open(/tmp/sess_*****, O_RDWR) failed: Permission denied (13) in /home/site/public_html/system/classes/kohana/session/native.php  on line 27

Я почти уверен, что у Kohana есть собственный встроенный обработчик ошибок, но он не запускается с этой ошибкой (т.е.это проявляется как обычная ошибка PHP, а не как ошибка Коханы).

PHP error
(источник: alexanderdickson.com)

Любой, кто когда-либо использовал Kohana, заметит, что это, похоже, обходит обработку ошибок Kohana (возможно, установленную с помощью set_error_handler()).

Можно ли как-нибудь остановить появление этой ошибки без переключение с собственного сеанса (т.е.файловый) драйвер?

Должен ли я просто попрактиковаться в загрузке и добавить @ подавитель ошибок session_start() в основном коде Коханы?Должен ли я расслабиться error_reporting()?

Спасибо

Это было полезно?

Решение

Ты звонишь ini_set('session.save_path', APPPATH.'sessions') (заменять APPPATH.'sessions' С помощью каталога, который вы хотите) в Bootstrap.php, чтобы заставить сеансы быть записаны на application/sessions. Отказ Это повысит безопасность использования местных сессий и должен решить вашу проблему.

Другие советы

Это зависит от SESSION SESSIC.SAVE_PATH Директивы, вы можете переопределить его до некоторой записи папки в PHP.INI, или вы можете попробовать это в своем .htaccess;

 php_value session.save_path '/path/to/folder/you/can/write'

Редактировать: Только так я не забываю, поставьте свой уровень папки настраиваемой сессии под HTDOCS / Pubject_html / что угодно.

Хотя все это немного сверхугольника, так как вы можете просить своего сервера администратора вежливо, чтобы проверить, в чем проблема с разрешениями.

Это означает, что ваш интерпретатор PHP не имеет прав на запись в /tmp.Попросите администратора сервера исправить это — это не имеет отношения к вашему приложению.

В случае коллизий с файлами сессий разных процессов php (работающих под разными пользователями):Предоставление им разных временных каталогов сеансов могло бы помочь.Например, вы можете переместить их из /tmp в /path/to/homedir/phptmp и использовать такую ​​структуру:

/path/to/homedir/
/path/to/homedir/htdocs
/path/to/homedir/phptmp
/path/to/homedir/logs
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top