如何隔离同一 Apache 服务器上的两个 php 会话

如何隔离同一 Apache 服务器上的两个 php 会话

我有 LAMP 堆栈服务器(使用 apache2 的 vhost 配置)。我已经在这个服务器上运行了一个网站。现在我想在同一台服务器上托管另一个网站。

但是,第二个网站生成的 session_id 和 session 应该独立于第一个(现有)网站。事实上,我期望的是,两个网站都不应该知道并访问彼此的 session。

可以在单个 Apache 服务器上使用 PHP 实现此操作吗?如何实现此隔离?

答案1

我建议使用 Apache 的SUExec wrappermod_fastcgi(或 mod_fastcgid)。

mod_fastcgid 是一个动态工作池,它以特定用户的身份执行 PHP 解释器,而不是在 Web 浏览器的用户 ID 下执行。这样,您可以为每个网站创建不同的 unix 用户。

这不仅有助于区分每个网站,而且还限制了潜在入侵造成的损害,并且有助于提升每个网站的整体隐私感。

使用 fastcgid,每个站点可以拥有自己的 PHP.ini(例如,位于网站用户主目录中),并且在这个个性化配置中,您应该能够设置存储已保存会话的特定路径;

例如,如果您将此路径设置为/home/website1/tmp//home/webiste2/tmp/,则每个用户都将拥有自己的存储会话个人路径,并使用 unix 文件权限进行保护。

如果这是个人服务器并且所有网站都属于您,请考虑将会话缓存存储在 mysql DB 中。但这对于多宿主服务器来说不能很好地扩展。

祝你好运!

相关内容