Laravel 5.5.24部署至AWS Ubuntu后CSS、JS及图片无法加载求助
我之前在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规则:
配置完后重启Nginx: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版本 } }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
- 如果你用Nginx,编辑配置文件(比如
修复权限的深层问题
你已经设置了读取权限,但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

