Laravel部署至虚拟主机后文件上传失败求助
Laravel部署后文件上传失败的解决建议
以下是针对你遇到的部署后文件上传失败问题的具体排查和解决步骤:
检查目录权限
虚拟主机下storage和public/storage目录的权限是最常见的问题。如果有SSH权限,执行:chmod -R 755 storage chmod -R 755 public/storage无SSH权限的话,通过主机控制面板将这两个目录权限设为755,确保Web服务器用户(如www-data、apache)拥有读写权限。
重新创建存储符号链接
本地环境的storage:link不会自动同步到服务器,需重新创建:- 有SSH权限:运行
php artisan storage:link - 无SSH权限:手动在
public目录下创建指向../storage/app/public的软链接(Linux用ln命令,Windows用mklink)
- 有SSH权限:运行
排查PHP上传配置限制
虚拟主机的PHP默认配置可能限制了文件大小,可通过.htaccess调整(Apache服务器):php_value upload_max_filesize 10M php_value post_max_size 12M php_value max_execution_time 60确保
post_max_size大于upload_max_filesize,避免因文件过大导致上传失败。手动创建目标存储目录
虽然Laravel的store()方法会自动创建目录,但虚拟主机权限可能阻止这一操作。手动创建storage/app/public/images目录并设置755权限。开启调试获取具体错误
当前错误提示过于模糊,修改.env开启调试模式:APP_DEBUG=true查看
storage/logs/laravel.log中的详细错误信息,比如磁盘空间不足、权限拒接等,精准定位问题。明确指定存储磁盘
修改store方法,明确使用public磁盘存储,避免默认磁盘的潜在问题:$img = $request->file('file')->store('images', 'public');
内容的提问来源于stack exchange,提问作者vvooki.
相关产品推荐
相关产品推荐

