PHP-FPM With Opcache 尝试打开其他池的缓存文件

PHP-FPM With Opcache tries to open other pool's cached files

我发现一些奇怪的东西 运行 Joomla 网站,当 OpCache 启用时。

所有网站都有单独的 fpm 池,有 open_base_dir 限制。

让我们假设有两个网:

/var/www/web1

/var/www/web2

首先在浏览器中加载 web1,工作正常。

然后我尝试打开 web2,它抛出 open_base_dir 限制错误,file_exist() 无法检查 /var/www/web1/....php

web2 想要从 web1 打开一个文件。

错误方向相反,我重启php-fpm,先打开web2,再打开web1,现在web1要打开一个/var/www/web2文件

只有当有两个相同版本的 Joomlas 并且启用了 Opcache 时才会出现这种情况。

opcache 以某种方式记住脚本已被打开并缓存并尝试从其他池的目录加载它。

我有 php-fpm - 5.6.7+dfsg-1 版本。

我暂时关闭了 opcache,但我是不是配置有误,还是这是正常现象?

这是一个known issue with PHP-FPM and opcache. Amazingly, you'll be able to read the sensitive scripts regardless of ownership and permission. See this example。使用 open_base_dir 限制或 chroot 无法解决它。