NGINX: PHP-FPM – Unknown: Failed to write session data (files).

Автор: | 05/10/2014

nginx_logoПосле переезда на NGINX+ PHP-FPM – в логе ошибок стали появляться записи вида:

2014/10/04 09:51:00 [error] 15762#0: *155337 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:9003”, host: “rtfm.co.ua”, referrer: “http://rtfm.co.ua/wp-admin/post.php?post=5496&action=edit&message=10”
2014/10/04 09:51:56 [error] 15762#0: *155337 FastCGI sent in stderr: “PHP message: PHP Warning: Unknown: open(/var/lib/php/session/sess_5j5k1r3t3dailk3s7lq8871gu7, O_RDWR) failed: Permission denied (13) 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:9003”, host: “rtfm.co.ua”, referrer: “http://rtfm.co.ua/wp-admin/post.php?post=5496&action=edit&message=10”

Проверяем права:

# ls -l /var/lib/php/
total 228
drwxrwx--- 2 root apache 229376 Sep 30 08:59 session

Создаём каталог для каждого пользователя каждого php-fpm пула:

# mkdir /var/lib/php/session/rtfm

Устанавливаем владельца, который указан в user/group пула, и даём права на доступ к каталогу только ему:

# chown rtfm:rtfm /var/lib/php/session/rtfm && chmod 700 /var/lib/php/session/rtfm

Редактируем настройки пула, в данном случае это файл /etc/php-fpm.d/rtfm.co.ua.conf, добавляем параемтр:

php_admin_value[session.save_path] = /var/lib/php/session/rtfm

Перезапускаем PHP-FPM:

# service php-fpm restart
Stopping php-fpm:                                          [  OK  ]
Starting php-fpm:                                          [  OK  ]

Устанавливаем полный доступ на директорию session:

# chmod 777 /var/lib/php/session/

Проверяем каталог:

# ls -l /var/lib/php/session/rtfm
total 0
-rw------- 1 rtfm rtfm 0 Oct  4 10:10 sess_5j5k1r3t3dailk3s7lq8871gu7
-rw------- 1 rtfm rtfm 0 Oct  4 10:10 sess_80fslkcad1mmhbm7eeil6pf937
-rw------- 1 rtfm rtfm 0 Oct  4 10:10 sess_pfkp0nq0epb2p8jen5gf6nhtt1

Повторяем для каждого пула.

Готово.