Laravel 项目在宝塔面板部署需确保:.env 配置为 production 环境并关闭 DEBUG,清除缓存,storage 和 bootstrap/cache 可写,Nginx 指向 public 目录并启用 Laravel 伪静态,PHP 版本与扩展匹配,APP_URL 同步 HTTPS 域名,数据库配置正确,日志权限正常。

确认 Laravel 项目已适配生产环境
宝塔面板本身不关心你用什么框架,但它会严格按 PHP 运行时和 Nginx 配置来执行。Laravel 在本地开发能跑,不代表丢到宝塔就能直接访问 —— 最常见的失败原因是 .env 没改、APP_DEBUG 没关、缓存没清。
-
APP_ENV=production和APP_DEBUG=false必须写在服务器上的.env里(不是本地的) - 执行
php artisan config:clear、php artisan cache:clear、php artisan view:clear,否则配置仍走缓存 -
storage/和bootstrap/cache/目录必须可写,宝塔新建站点时默认权限是 755,需手动设为 775 或用chown -R www:www storage bootstrap/cache - 如果用了队列或 Horizon,记得启动
supervisor并指向正确的artisan queue:work命令
Nginx 配置必须指向 public 目录,且启用伪静态
宝塔建站时选“Laravel”会自动套用规则,但实际常被忽略两点:一是根目录设错(设成项目根而非 public),二是伪静态规则没生效(比如用了 Apache 规则却配在 Nginx 下)。
- 站点设置 → “网站目录” → “运行目录” 必须选
/public(不是/) - 伪静态 → 选“Laravel 5”,内容等价于以下 Nginx 配置片段:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
- 如果用了 Vue Router 的 history 模式或自定义 API 路由,需额外排除静态资源路径,例如:
location ^~ /api/ { try_files $uri $uri/ /index.php?$query_string; } - 别手动生成
.htaccess放进去 —— Nginx 不读这个文件
PHP 版本与扩展必须匹配 Laravel 版本要求
宝塔默认装的是 PHP 8.0+,但老项目可能基于 Laravel 6/7,依赖 php-xml、php-mbstring、php-tokenizer、php-bcmath 等扩展。缺一个,composer install 或 artisan 命令就会报错。
- 进宝塔 → PHP 设置 → “安装扩展”,勾选上述常用扩展(尤其
opcache建议开启,提升性能) - 检查
php -v和php -m | grep mbstring确认 CLI 模式下也加载了扩展(宝塔有时只开 FPM 模块,CLI 仍缺失) - Laravel 10 要求 PHP ≥ 8.1,若用宝塔一键部署旧版 PHP,得手动升级或切换 PHP 版本管理器
- Composer 安装依赖时若卡住,先运行
composer config -g repo.packagist composer https://packagist.phpcomposer.com(国内镜像)
HTTPS 与域名绑定后,务必更新 APP_URL 并重跑 migrate
很多开发者在宝塔上绑好域名、申请完 SSL 就以为完事了,结果邮件发不出、图片路径 404、后台登录跳转回 HTTP —— 根源都在 APP_URL 没同步更新。
-
APP_URL必须写成带协议的完整地址,如https://example.com,不能是http://localhost或留空 - 修改后要重新运行
php artisan config:cache(注意:config:cache不能在APP_DEBUG=true时使用) - 如果用了
php artisan migrate:fresh初始化数据库,确保DB_HOST指向宝塔的 MySQL 地址(通常是127.0.0.1,不是localhost;部分宝塔版本对localhost解析异常) - 日志路径
storage/logs/laravel.log权限不对时,500 错误不会输出具体信息,先看宝塔面板里的“错误日志”再查 Laravel 日志
storage/logs/ 和宝塔的 Nginx 错误日志,而不是重装。










