每个 laravel 站点必须独立配置:根目录设为 public/,分配独立 php 版本与扩展,清空 open_basedir 并关闭防跨站,逐个启用「laravel 5」伪静态规则,且所有命令(如 composer install、artisan key:generate)须在各自项目根目录下执行。

在宝塔面板中配置多站点时,每个 Laravel 应用必须独立部署、互不干扰。关键不是“单独安装”,而是为每个站点**独立配置运行环境、根目录、PHP 设置和权限**。只要路径隔离、配置精准,多个 Laravel 项目可共存于同一台服务器,彼此无影响。
每个站点需独立设置网站根目录为 public/
这是最易出错也最关键的一步。宝塔默认把站点根目录设为项目总目录(如 /www/wwwroot/site1),但 Laravel 必须通过 public/ 入口访问,否则 .env、app/ 等敏感目录将直接暴露,且首页 404。
- 进入「网站」→ 选中第一个站点 → 「设置」→ 「网站目录」
- 将「网站目录」改为:/www/wwwroot/site1/public(注意:是目录,不是文件;末尾不加斜杠)
- 保存后,立即点击右上角「重载配置」或重启对应 PHP 版本服务
- 对第二个站点(如 site2)重复操作,路径改为 /www/wwwroot/site2/public
各站点使用独立 PHP 版本与扩展配置
不同 Laravel 版本对 PHP 要求不同(如 Laravel 10 需 PHP ≥ 8.1),多站点建议按需分配 PHP 版本,避免混用导致兼容问题。
- 添加站点时,在「PHP版本」下拉菜单中为 site1 选择 PHP 8.2,site2 选择 PHP 8.1(如有需要)
- 进每个站点的「PHP 设置」→ 「配置修改」,确认已启用:openssl、pdo、mbstring、tokenizer、xml、ctype、json、fileinfo
- 务必清空该站点对应的 open_basedir 值,并关闭「防跨站攻击」——此设置是按站点生效的,不能只关一次
伪静态规则必须逐个站点启用并验证
宝塔的「伪静态」模板虽统一,但每套规则只作用于当前站点。切勿假设选过一次就全局生效。
- 对每个 Laravel 站点,进入「网站设置」→ 「伪静态」→ 选择「Laravel 5」
- 该操作会自动写入标准 Nginx 规则:try_files $uri $uri/ /index.php?$query_string;
- 手动检查配置文件(「配置文件」选项卡),确认这条规则位于 location / { } 块内,且未被其他 if 或 rewrite 覆盖
- 访问 http://site1.test/.env 应返回 404 或 403;访问 http://site1.test 应显示欢迎页
依赖与权限必须按站点分别执行
composer install、key:generate、迁移等命令不可跨站点运行,storage 和 bootstrap/cache 权限也必须按目录单独赋权。
- 用宝塔终端或 SSH 分别进入各项目根目录:
cd /www/wwwroot/site1 → composer install --no-dev
cd /www/wwwroot/site2 → composer install --no-dev - 生成密钥:php artisan key:generate(需在各自根目录下执行)
- 设置可写权限(以 site1 为例):
chown -R www:www storage bootstrap/cache
chmod -R u+rwX storage bootstrap/cache - 数据库配置、迁移、缓存生成等全部操作,均需在对应站点根目录下完成











