You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.5.24部署至AWS Ubuntu后CSS、JS及图片无法加载求助

AWS Ubuntu部署Laravel后资源加载失败的排查方案

我之前在AWS Ubuntu部署Laravel时也踩过这个坑!结合当时的排查经验,给你几个大概率能解决问题的方向:

  • 检查资源引用路径与APP_URL配置
    本地用php -S localhost:8000启动时,Laravel默认以localhost作为资源根路径,但部署到服务器后,必须把.env文件里的APP_URL改成你的服务器公网IP或域名(比如APP_URL=https://your-domain.com),然后执行php artisan config:clear清除配置缓存。否则页面会尝试从localhost加载资源,自然找不到。
    另外,确保模板里的资源引用用Laravel的辅助函数,比如{{ asset('css/app.css') }}而不是相对路径,这样会自动基于APP_URL生成正确的资源地址。

  • 确认Web服务器根目录指向public
    这是最容易忽略的点!不管用Nginx还是Apache,必须把Web服务的根目录设置为Laravel项目的public文件夹,而不是项目根目录:

    • 如果你用Nginx,编辑配置文件(比如/etc/nginx/sites-available/your-site.conf),确保root指向/var/www/your-project/public,并配置好Rewrite规则:
      server {
          listen 80;
          server_name your-domain-or-ip;
          root /var/www/your-project/public;
      
          index index.php index.html;
      
          location / {
              try_files $uri $uri/ /index.php?$query_string;
          }
      
          location ~ \.php$ {
              include snippets/fastcgi-php.conf;
              fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 注意对应你的PHP版本
          }
      }
      
      配置完后重启Nginx:sudo systemctl restart nginx
    • 如果你用Apache,修改/etc/apache2/sites-available/your-site.conf里的DocumentRoot为/var/www/your-project/public,同时启用mod_rewrite模块:sudo a2enmod rewrite,然后重启Apache:sudo systemctl restart apache2
  • 修复权限的深层问题
    你已经设置了读取权限,但Linux下目录还需要执行权限才能访问,而且要确保文件所有者是Web服务器的用户(通常是www-data)。执行以下命令:

    # 递归设置所有者为www-data
    sudo chown -R www-data:www-data /var/www/your-project
    # 设置目录权限为755(读/写/执行给所有者,读/执行给组和其他)
    sudo chmod -R 755 /var/www/your-project
    # 设置public下的文件权限为644(读/写给所有者,读给组和其他)
    sudo chmod -R 644 /var/www/your-project/public/*
    

    另外,Laravel的storage和bootstrap/cache目录需要写入权限,否则可能影响资源编译或缓存:

    sudo chmod -R 775 storage bootstrap/cache
    
  • 检查资源是否完成生产编译
    如果你本地用Vite或Mix编译资源(比如npm run dev),部署到服务器前必须执行npm run build生成生产环境的资源文件,然后把public/build(Vite)或public/css/public/js(Mix)里的编译文件同步到服务器。如果跳过这一步,服务器上的资源路径会找不到对应的编译后文件,导致404。

  • 用浏览器控制台定位具体错误
    打开浏览器开发者工具(F12),切换到「网络」标签,刷新页面看资源的请求状态:

    • 404:资源路径错误,回到第一、二步检查配置
    • 403:权限问题,重新设置权限或检查Web服务器配置
    • 500:服务器内部错误,查看Laravel日志storage/logs/laravel.log找具体报错

内容的提问来源于stack exchange,提问作者dzuritaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:04:50