宝塔部署Laravel注意点:权限与伪静态设置
时间:2026-02-14 20:00:53 380浏览 收藏
在宝塔面板上成功部署 Laravel 项目,关键不在代码本身,而在于三个极易被忽视却直接决定首页能否打开的核心配置:必须将网站根目录精准指向 `public` 子目录并重启 PHP,确保 `storage` 和 `bootstrap/cache` 目录由 `www` 用户拥有且权限安全(推荐 `u+rwX` 而非危险的 `777`),以及严格采用 Laravel 官方 Nginx 伪静态规则(含 `.env` 等敏感文件拦截和正确 `fastcgi_pass` 端口),任何一处疏漏都会导致神秘的 500 或 404 错误——掌握这三步,才能绕过九成部署陷阱,让 Laravel 在宝塔上真正稳定跑起来。

宝塔面板部署 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 的访问,极易导致配置泄露。
- 在「网站」→「设置」→「伪静态」中,清空原有内容,粘贴以下标准规则:
location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; # 根据你实际 PHP 版本端口调整,如 9001、9002 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(env|htaccess|htpasswd|ini|log|sh|sql|bak|swp)$ { deny all; } - 特别注意:
fastcgi_pass的端口要和你当前启用的 PHP 版本一致(可在「软件商店」→「PHP 管理」里查看监听端口) - 保存后点「重载配置」,不要只点「保存」——只有重载才真正生效
env 文件和 APP_KEY 不能漏,且 .env 要禁止 Web 访问
宝塔不会自动帮你生成 .env 或运行 php artisan key:generate,而 .env 若被 Nginx 错误暴露,数据库密码就全亮了。
- 先确认
.env文件存在且已配置好数据库、APP_URL、APP_KEY(若无 APP_KEY,SSH 进入项目根目录运行:php artisan key:generate --force) - 上面伪静态规则里的
location ~ \.(env|...)段就是干这个的,必须保留;若删了,直接在浏览器访问https://yoursite/.env就能下载全部配置 - 如果项目用了队列或 Horizon,还要确保
supervisor配置里指定的用户是www,且工作目录是项目根目录(不是public)
最麻烦的其实是权限和路径的耦合:改了根目录却忘了改 chown 范围,加了伪静态却没重载,或者 APP_KEY 是本地生成的、没同步到服务器——这些地方一漏,错误日志里往往只报模糊的 500 Internal Server Error,得去 /www/wwwlogs/yourdomain.error.log 里翻真实原因。
今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
465 收藏
-
474 收藏
-
172 收藏
-
494 收藏
-
143 收藏
-
380 收藏
-
111 收藏
-
205 收藏
-
109 收藏
-
462 收藏
-
495 收藏
-
470 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习