Laravel怎么打包上线 Laravel部署到宝塔面板教程 【上线】

1次阅读

Laravel怎么打包上线 Laravel部署到宝塔面板教程 【上线】

宝塔面板laravel 项目跑不起来,多半是 public 目录没设对

宝塔默认把网站根目录指向你上传的整个 Laravel 项目文件夹(比如 /www/wwwroot/myapp),但 Laravel 的入口其实是 public 子目录。直接这么配,index.php 找不到 vendor/autoload.php,立刻报错 Failed to open stream: No such file or Directory

实操建议:

  • 在宝塔「网站」→「设置」→「网站目录」里,把「网站根目录」改成 /www/wwwroot/myapp/public(注意末尾的 public
  • 确保 .env 文件已上传到项目根目录(即 /www/wwwroot/myapp/.env),不是 public 下面
  • 别点宝塔的「重载配置」,要手动点「ssl」或「伪静态」页签再点一次「保存」,它才会真正重写 nginx 配置

Laravel 路由 404,检查宝塔是否开了伪静态

没开伪静态时,访问 /login 会直接 404,因为 Nginx 默认只认物理路径,不认识 Laravel 的路由规则。

实操建议:

  • 在宝塔「网站」→「设置」→「伪静态」,选择 Laravel 5(别选 thinkphp 或其他)
  • 确认生成的规则里包含 try_files $uri $uri/ /index.php?$query_string; 这一行
  • 如果自己手写过规则,删掉重选——手写的常漏掉 $query_string,导致 GET 参数丢失

php artisan migrate 在宝塔里执行失败,权限和环境变量是主因

在宝塔终端里运行 php artisan migrateSQLSTATE[HY000] [1045] access denied,或者提示 class 'AppModelsUser' not found,基本是两个问题:数据库凭据没读到,或自动加载没刷新。

实操建议:

  • 进宝塔终端前,先 cd /www/wwwroot/myapp,确保在项目根目录下操作
  • php -d memory_limit=-1 artisan migrate 避免内存不足中断(尤其有大迁移时)
  • 改过 .env 后,必须运行 php artisan config:clearphp artisan cache:clear,否则旧配置还在内存里
  • 宝塔终端默认用 www 用户执行,确保 storagebootstrap/cache 目录可写:chmod -R 755 storage bootstrap/cache

上线后 CSS/js 404 或混合内容警告,检查 APP_URLhttpS 设置

页面能打开,但样式乱、控制台一 net::ERR_INSECURE_RESPONSE 或资源 404,大概率是 APP_URL 没配对,或用了 HTTP 链接却走 https 页面。

实操建议:

  • .envAPP_URL 必须写完整协议和域名,比如 https://myapp.com,不能只写 myapp.comhttp://myapp.com
  • 如果宝塔开了 SSL,Nginx 配置里要加 fastcgi_param HTTPS on;,否则 Laravel 判断不出当前是 HTTPS,生成的 URL 还是 http
  • 清浏览器缓存,php artisan view:clear 也跑一遍,避免 Blade 缓存了旧链接

最麻烦的其实是 .env 文件权限和部署时被忽略——它既不能 777(安全风险),也不能 600(web 服务器读不到),推荐 644,且确认宝塔没把它当成“隐藏文件”自动过滤掉。

text=ZqhQzanResources