在宝塔面板中用PHP 7.4托管多个网站,核心是通过Nginx虚拟主机机制为各站点独立绑定域名、根目录及PHP-FPM进程池,共用或按需调用PHP 7.4解释器;添加站点时统一选择PHP 7.4即可默认共享同一php-fpm-74实例,若需隔离则须手动配置独立socket和服务。

在宝塔面板中用 PHP 7.4 同时托管多个网站,核心不是“让 PHP 7.4 管理站点”,而是利用 Nginx 的多虚拟主机机制,为每个站点独立绑定域名、指定根目录、分配 PHP-FPM 进程池,并确保所有站点共用或按需调用 PHP 7.4 解释器。你不需要为每个站装一遍 PHP 7.4,但必须避免配置冲突、权限错乱和 socket 复用导致的 502 错误。
添加多个独立站点并统一指定 PHP 7.4
这一步建立基础结构,每个站点拥有自己的 conf 文件、日志路径和 PHP 版本指向。
登录宝塔面板 → 【网站】→ 【添加站点】→ 填写域名(如 site-a.com)、根目录(如 /www/wwwroot/site-a)→ 在【PHP版本】下拉菜单中【必须选择 PHP 7.4】 → 提交。
重复上述操作,添加 site-b.com、site-c.com 等站点,全部勾选 PHP 7.4。注意:不要勾选“FTP”或“数据库”除非真需要——多开无意义服务会挤占内存。
立即学习“PHP免费学习笔记(深入)”;
添加完成后,所有站点默认使用同一个 php-fpm-74 实例(socket 路径为 /tmp/php-cgi-74.sock),这是安全且高效的默认模式。只要站点间无扩展冲突(如一个站启用了 ionCube,另一个没启),就无需额外隔离。
为不同站点分配独立 PHP-FPM 进程池(可选进阶)
当某个站点需单独调优(如 max_children=50、request_terminate_timeout=300),或存在扩展兼容性冲突(例如 A 站用 Redis 扩展 v5.3.7,B 站必须用 v4.5.0),就必须拆出独立 FPM 实例。宝塔不提供界面操作,需手动配置。
方法一:复用 PHP 7.4 二进制,新建 FPM 配置与服务
复制原配置:cp -r /www/server/php/74/etc/php-fpm.d/ /www/server/php/74/etc/php-fpm.d-siteb/
编辑新配置:vi /www/server/php/74/etc/php-fpm.d-siteb/www.conf,将 listen = /tmp/php-cgi-74-siteb.sock(路径必须唯一,不能与原实例重名)
创建服务脚本:vi /etc/init.d/php-fpm-74-siteb,内容参考 /etc/init.d/php-fpm-74,仅修改 CONF_FILE=/www/server/php/74/etc/php-fpm.d-siteb/www.conf 和 PID_FILE=/www/server/php/74/var/run/php-fpm-74-siteb.pid
启动服务:chmod +x /etc/init.d/php-fpm-74-siteb && chkconfig --add php-fpm-74-siteb(CentOS)或 systemctl daemon-reload && systemctl start php-fpm-74-siteb(Ubuntu)
方法二:直接改 Nginx 配置指向新 socket
进入【网站】→【site-b.com】→【设置】→【配置文件】→ 找到 location ~ .php$ 区块 → 将 fastcgi_pass unix:/tmp/php-cgi-74.sock; 改为 fastcgi_pass unix:/tmp/php-cgi-74-siteb.sock;
【改完必须点击右上角「重载Web服务」,否则 Nginx 不加载新配置】
批量启停、备份与伪静态同步操作
当管理 10+ 个基于 PHP 7.4 的站点时,逐个操作效率极低。优先使用面板内置多选功能,它底层调用的是真实 shell 命令,可靠且即时。
第一步:进入【网站】列表页 → 点击全选框(或 Ctrl+鼠标左键多选)→ 右键任意已选站点 → 弹出菜单中选择【停止】或【备份】
第二步:若需统一更新伪静态规则(例如所有 ThinkPHP 站点都加 pathinfo 兼容),进入【计划任务】→ 【添加计划任务】→ 类型选【Shell脚本】→ 内容填:
sed -i '/location ~ \.php$/a include /www/server/panel/vhost/nginx/php.conf;' /www/server/panel/vhost/nginx/*.conf
第三步:执行周期设为「每小时」或「立即执行」→ 保存后点击【立即执行】验证是否写入所有站点 conf 文件末尾
注意:批量操作失败时,错误提示藏在面板右上角小铃铛图标里,务必点击查看具体哪一站点因配置语法错误被跳过
多站点共用数据库但权限严格隔离
多个 PHP 7.4 站点可以共享一个 MySQL 数据库实例,但绝不能共用同一数据库用户——否则 A 站删表会直接影响 B 站。
① 创建统一数据库:【数据库】→ 【添加数据库】→ 名称填 shared_core,字符集选 utf8mb4
② 为每个站点创建独立用户:点击 shared_core 行右侧【管理】→ phpMyAdmin → 【用户】→ 【+ 添加用户】→ 用户名填 site_a_db,主机填 localhost,密码强随机,勾选【仅此数据库】→ 权限只勾 SELECT、INSERT、UPDATE、DELETE(去掉 DROP、ALTER)→ 执行
③ 重复步骤②,为 site-b.com 创建 site_b_db 用户,同样限定权限范围
④ 在各站点程序配置文件中(如 .env 或 config/database.php),分别填写对应用户名和密码,表前缀设为不同值(如 a_、b_),确保物理表名不冲突
【切勿在配置中使用 root 用户或 shared_core 同名用户连接数据库】



















