Ошибки работы с PHP сессиями в Unix/Linux

Ошибки работы с PHP сессиями в Unix/Linux

Хочу описать статью с возможными ошибками работы PHP и сессиями в Unix/Linux. Думаю многие сталкиваются и будет полезно знать как решать ту, или иную ошибку.

Обновлял заббикс и после его обновления, перестал корректно работать, посмотрел лог и увидел:

2017/12/08 21:15:48 [error] 40014#40014: *395 FastCGI sent in stderr: "PHP message: PHP Warning:  require_once(/etc/zabbix/web/maintenance.inc.php): failed to open stream: Permission denied in /usr/share/zabbix/include/classes/core/ZBase.php on line 269

-=== Ошибка 1 ===-

Можно увидить следующую ошибку:

Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

Возникла у меня при установке phpmyadmin.

Так же, если имеется cPanel, может возникнуть такая же ошибка, я описывал решение в моей статье:

ошибка в phpMyAdmin «Cannot start session without errors»

-=== Ошибка 2 ===-

При работе с апачем, я получил:

Warning: session_start() [function.session-start]: open(/var/lib/php/session/sess_eqbchncji8kj22f0iqa9g3v7u2, O_RDWR) failed: Permission denied (13) in /var/www/vhosts/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

-=== Ошибка 3 ===-

Получил еще ошибку:

FastCGI sent in stderr: “PHP message: PHP 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” while reading upstream, client: 37.***.***.56, server: rtfm.co.ua, request: “POST /wp-admin/admin-ajax.php HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9009”, host: “rtfm.co.ua”, referrer: “http://linux-notes.org/wp-admin/post.php?post=5496&action=edit&message=10”

Другие ошибки я буду добавлять по мере их возникновения.

Решения ошибок работы с PHP сессиями в Unix/Linux

Ну что, пришли к решению. Первое что необходимо сделать, — так проверить путь куда сохраняются сессии, для этого, выполните:

$ php -i |grep save_path

session.save_path => /var/lib/php/session => /var/lib/php/session

Как видно у меня этот путь рассположен в /var/lib/php/session директории.

Проверим права на данную директорию:

# ls -alh /var/lib/php/session

Смотрим от какого юзера идет выполнение php кода:

# ps aux |grep php-fpm

PS: Или, можно зайти в ваш пул php-fpm и найти пользователя от которого он запущен!

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

# mkdir /var/lib/php/session
# chmod 1777 /var/lib/php/session

И так же, выставляем владельца и группу:

# chown root:www /var/lib/php/session
# chown -R www: /var/cache/nginx

ИЛИ:

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

Потом, открываем ваш php.ini и находим строку:

;session.save_path = "/tmp"

И нужно выполнить расскоменчивание данной строки.

PS: Возможно, нужно будет выставить права и владельца!

Если вы используете выделенные пулы под свои php- проекты, то стоит поискать данную строку в:

# grep -lR 'php_value' /etc/php-fpm.d

Если покажет файлы, то стоит посмотреть привести к:

[...]
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
[...]

Перезапускаем php-fpm службу:

# service php-fpm restart

Для апача, следуюет указать следующие строки:

php_value session.save_handler "files"
php_value session.save_path    "/var/lib/php/session"

а поиск файла можно сделать так:

# grep -lR 'php_value' /etc/

И тоже, выполнить перезапуск службы:

# service httpd restart

Вот и все решение! А у меня на этом статья «Ошибки работы с PHP сессиями в Unix/Linux» завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.