Я запускаю сервер nginx с 40 идентичными веб-приложениями на 40 разных портах в 40 разных пулах PHP-FPM. Каждый пул запускается для отдельного пользователя.
Мой sessions.save_path
в php.ini
является /tmp/php_sessions
. Скажем, я впервые приезжаю http://mywebsite.com:5007
. Я могу наблюдать, как этот файл появляется в /tmp/php_sessions
:
-rw------- 1 www-data07 www-data07 0 jan. 17 00:35 sess_bb84gmtago2u33g1jmtbhdcu80
Затем я посещаю http://mywebsite.com:5008
. В моем браузере я могу прочитать эту ошибку
Warning: Unknown: open(/tmp/php_sessions/sess_bb84gmtago2u33g1jmtbhdcu80, 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 (/tmp/php_sessions) in Unknown on line 0
Я понимаю, что это потому, что пользователь www-data08
пытается записать в файл, где только www-data07
имеет права на запись. Но почему не www-data08
сделать собственные данные сеанса? Как я могу это исправить?
Здесь я немного поспешил на спусковой крючок. В моем конкретном случае проблема заключалась в том, что все 40 веб-приложений использовали один и тот же файл cookie в моем браузере. Когда я перешел с порта 5007 на порт 5008, мой браузер пытался продолжить сеанс с порта 5007, но с другим UID серверной части.