我在 40 个不同的 PHP-FPM 池中的 40 个不同端口上运行了 40 个相同的 Web 应用的 nginx 服务器。每个池都由一个单独的用户运行。
我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
创建自己的会话数据?我该如何解决这个问题?
答案1
我在这里反应有点快。在我的特定实例中,问题是所有 40 个 Web 应用都在我的浏览器中共享同一个 cookie。当我从端口 5007 移动到端口 5008 时,我的浏览器试图从端口 5007 继续我的会话,但使用不同的后端 UID。