Laravel在宝塔面板跑不起来主因是根目录未设为public、www用户无storage/cache写入权限、PHP CLI路径与面板不一致、APP_DEBUG关闭导致错误不显示;需依次修正路径、权限、PHP配置及调试设置。

宝塔面板里 Laravel 项目跑不起来,多半是 public 目录没设对
宝塔默认把网站根目录指向整个 Laravel 项目文件夹,但 Laravel 的入口必须是 public 子目录,否则 index.php 找不到、路由 404、静态资源 403 都会立刻出现。
实操建议:
- 在宝塔「网站」列表中,点击对应站点 → 「设置」→ 「网站目录」→ 把「网站根目录」改成
/www/wwwroot/your-site-name/public - 顺手勾选「防跨站攻击(open_basedir)」并点击右侧「关闭」——Laravel 的
storage和bootstrap/cache需要写入权限,open_basedir 会拦住它 - 别改错成
public/index.php,根目录只到public这一层,不是文件
Laravel 写日志或上传文件报错 Permission denied
宝塔用的是 www 用户运行 PHP,而 Laravel 的 storage 和 bootstrap/cache 默认属主可能是 root 或部署用户,PHP 进程根本写不进去。
实操建议:
- SSH 登录服务器,进项目根目录执行:
chown -R www:www storage/ bootstrap/cache/
- 确保目录权限至少是
755,文件是644;如果还报错,临时试下chmod -R 775 storage/ bootstrap/cache/(上线前应调回更严权限) - 别只改
storage/logs,storage/framework/views和storage/framework/sessions同样需要可写
php artisan migrate 在宝塔终端里执行失败
常见现象是提示 Class 'PDO' not found 或连不上数据库,本质是宝塔的 PHP 环境和你在终端里用的不是同一个 —— 宝塔面板用的是它自己编译/安装的 PHP(比如 /www/server/php/81/bin/php),而系统默认 php 命令可能指向别的版本或根本没装 CLI 模块。
实操建议:
- 先确认宝塔当前网站用的 PHP 版本(如 8.1),然后用完整路径执行:
/www/server/php/81/bin/php artisan migrate
- 检查该 PHP 是否启用了
pdo_mysql:运行/www/server/php/81/bin/php -m | grep pdo
,没输出就去宝塔「软件商店」→「PHP 设置」→「配置文件」里确认扩展已开启 -
.env文件必须存在且权限不能是600(宝塔 PHP 进程读不到),推荐644,内容里的DB_HOST别写localhost,换成127.0.0.1更稳
Nginx 报 500 Internal Server Error,但日志里没明显错误
这通常是因为 Laravel 的 APP_DEBUG=false 关掉了详细报错,而 Nginx 错误日志默认不记录 PHP 致命错误细节。你看到的只是“上游返回了空响应”这类模糊提示。
实操建议:
- 先临时打开调试:编辑
.env,设APP_DEBUG=true,再刷新页面看是否爆出具体异常(比如某个服务提供者加载失败) - 查宝塔 Nginx 错误日志:
/www/wwwlogs/your-site-name.error.log;同时也要看 Laravel 日志:storage/logs/laravel-*.log - 注意宝塔「网站」→「SSL」→「强制 HTTPS」开关,如果没配好证书却开了它,会导致重定向循环,Nginx 日志里会出现大量
rewrite or internal redirection cycle
环境配置最麻烦的从来不是步骤多,而是每个环节都依赖前一个环节的权限、路径、用户、扩展全部对齐。漏掉一个 www 用户归属,或少开一个 PHP 扩展,后面所有命令和页面都是障眼法。










