真正隔离需每个站点独享PHP解释器进程、配置文件及用户上下文:通过宝塔等面板安装同一主版本多个PHP实例(如8.4.0与8.4.1),分别绑定专属系统用户、独立php.ini、显式配置open_basedir,并单独启用扩展与参数,杜绝扩展冲突、配置覆盖与越权访问。

多网站共用一个 PHP 运行环境,迟早会出问题——扩展冲突、php.ini 参数互相覆盖、opcache 缓存污染、甚至一个站点的 display_errors = On 把所有站的日志都打爆。真正隔离,必须让每个站点拥有独立的 PHP 解释器进程、配置文件和用户上下文。
用不同 PHP 版本实例实现进程级隔离
宝塔或小皮面板支持安装多个同主版本的 PHP 实例(如 PHP 8.4.0 和 PHP 8.4.1),它们各自拥有独立的 php-fpm.conf、php.ini 和扩展目录。这不是“切换版本”的假隔离,而是两个完全分开的 FPM master 进程。
- 在【软件商店】中安装至少两个 PHP 8.4 构建版本(注意看后缀,不能只装一个“PHP 8.4”)
- 进【网站】→【设置】→【PHP版本】,为 A 站选
PHP 8.4.0,B 站选PHP 8.4.1 - 分别点击这两个 PHP 版本的【设置】→【配置修改】,改
error_log路径、opcache.enable、memory_limit,确认修改不互相影响 - 关键点:同一主版本下多个实例,比跨版本(如 7.4 vs 8.2)更安全——避免因语法差异导致的兼容性断裂
强制绑定专属系统用户,阻断文件越权
即使 PHP 配置隔离了,若所有站点的 FPM 进程都以 www 用户运行,它们仍能读写彼此的 /tmp、session 或缓存目录。必须让每个站点跑在唯一 UID 下。
- 进【网站】→【设置】→【网站目录】,记下根路径(如
/www/wwwroot/site-a.com) - 进该站点所用 PHP 的【设置】→【服务管理】→【编辑配置文件】,找到对应 pool 段(如
[www-site-a]) - 把
user和group改成新建用户(如sitea_user),同时设listen.owner/listen.group - 终端执行:
useradd -s /sbin/nologin sitea_user && chown -R sitea_user:sitea_user /www/wwwroot/site-a.com - 切记:不要复用用户;
chown -R必须包含runtime/、storage/、tmp/等子目录
open_basedir 不是可选项,是必填项
PHP 内核级路径白名单,是防止 file_get_contents('/etc/passwd') 或 include('../other-site/config.php') 的最后一道防线。仅靠用户隔离不够,open_basedir 是兜底。
立即学习“PHP免费学习笔记(深入)”;
- 在每个站点对应的
php.ini中显式设置:open_basedir = "/www/wwwroot/site-a.com:/tmp:/proc/mounts" - 允许的路径必须精确:根目录 + 临时目录 + 必要的系统路径(如
/proc/mounts供某些监控扩展读取) - 禁止使用
open_basedir = "."或留空——这等于没设 - 验证方式:在站点里写个测试脚本,尝试
file_get_contents('/www/wwwroot/site-b.com/.env'),应报Warning: file_get_contents(): open_basedir restriction in effect
别碰全局 php.ini,也别信“自动继承”
很多面板界面里写着“继承全局配置”,实际是障眼法。一旦你为站点指定了独立 PHP 实例,它的 php.ini 就是全新加载的,全局文件里的 extension=redis.so 不会自动生效。
- 每个 PHP 实例的扩展必须单独启用:进【PHP 设置】→【安装扩展】,勾选后点击安装,不是复制粘贴
extension=行 -
date.timezone、upload_max_filesize等参数,必须在该实例的php.ini里改,重启对应 FPM 才生效 - 常见坑:改了全局
php.ini,但站点用的是PHP 8.4.1实例,结果参数根本没变 - 最稳做法:每次修改后,用
phpinfo()页面确认“Loaded Configuration File”路径,再检查该文件内容
真正的隔离不在界面上点几下,而在每个 PHP 实例有自己用户、自己配置、自己扩展、自己日志路径。漏掉任一环,都可能让一个站点的崩溃拖垮全部,或一次错误配置暴露所有数据库密码。



















