宝塔部署Laravel需三步:一将网站根目录设为public目录并重启PHP;二执行chown -R www:www storage bootstrap/cache与chmod -R u+rwX storage bootstrap/cache;三配置官方Nginx伪静态规则并重载配置。
宝塔面板部署 Laravel 项目,最常出问题的不是代码,而是 public 目录没暴露、storage 和 bootstrap/cache 权限不对、伪静态规则漏掉或写错——这三处一错,500 或 404 就直接拦在首页。
public 目录必须设为网站根目录
Laravel 的入口文件 index.php 在 public 目录下,宝塔默认把整个 Laravel 项目根目录(含 app/、config/)设为网站根目录,这会导致敏感文件被直接访问,且路由无法解析。
- 在宝塔「网站」→「设置」→「网站目录」中,把「网站根目录」改为项目内
public子目录的绝对路径,例如/www/wwwroot/myapp/public - 确认「运行目录」留空(不要填
/public,那是旧版 Nginx 配置习惯,宝塔新版不认) - 改完立即重启 PHP 服务,否则部分环境变量(如
$_SERVER['DOCUMENT_ROOT'])仍指向旧路径
storage 和 bootstrap/cache 必须可写,但不能 777
storage 用于日志、缓存、session;bootstrap/cache 存编译后的配置和路由缓存。PHP 进程(通常是 www 用户)必须有写权限,但设成 777 会触发宝塔安全警告,且存在风险。
- 终端进入项目根目录,执行:
chown -R www:www storage bootstrap/cache
- 再执行:
chmod -R u+rwX storage bootstrap/cache
(注意末尾是大写 X,只给目录加执行权,不给文件加)
- 检查是否生效:
ls -ld storage应显示drwxr-xr-x 1 www www类似结构,且子目录内文件属主为www - 若用宝塔「文件」管理器手动改权限,请务必勾选「递归修改」,否则只改了目录本身,子项仍不可写
伪静态必须用 Laravel 官方 Nginx 规则,不能套用 ThinkPHP 或 WordPress
宝塔内置的「Laravel」伪静态模板多数版本过旧,缺少对 .well-known、robots.txt 等静态资源的放行,或未禁用对 .env 的访问,极易导致配置泄露。