Laravel共享主机与本地环境图片链接404问题解决方案咨询
Laravel共享主机部署后Storage图片404解决方案
重新创建Storage符号链接
本地环境执行php artisan storage:link会在public目录生成指向storage/app/public的软链接,但共享主机部署时这个链接常丢失或未同步:- 能SSH登录主机的话,直接运行命令:
php artisan storage:link - 无SSH权限时,临时在
routes/web.php添加一段路由,访问一次后立即删除:
部署后访问Route::get('/create-storage-link', function () { $target = storage_path('app/public'); $link = public_path('storage'); if (!file_exists($link)) { symlink($target, $link); return 'Storage链接创建成功'; } return 'Storage链接已存在'; });https://www.api.dormi.co.tz/create-storage-link,确认成功后删掉这段路由。
- 能SSH登录主机的话,直接运行命令:
检查文件与文件夹权限
共享主机权限限制严格,需确保:storage/app/public/images文件夹权限设为755- 文件夹内图片文件权限设为644
- 部分主机要求将文件用户组改为web服务器用户(如www-data),可通过FTP工具修改,或联系主机商调整。
确认网站根目录指向public文件夹
多数共享主机默认根目录为public_html,若Laravel项目的public目录未对应到这里会引发问题:- 优先通过主机控制面板(如cPanel)将网站根目录修改为Laravel项目的
public文件夹 - 无法修改根目录时,将
public内所有文件移至public_html,并修改public_html/index.php中的路径:// 原代码 require __DIR__.'/../vendor/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; // 修改为(假设项目文件存于根目录的laravel-project文件夹) require __DIR__.'/../laravel-project/vendor/autoload.php'; $app = require_once __DIR__.'/../laravel-project/bootstrap/app.php';
- 优先通过主机控制面板(如cPanel)将网站根目录修改为Laravel项目的
应急方案:手动复制文件
若以上方法均无法实施,可临时将storage/app/public/images内的图片手动复制到public/images文件夹,此时访问https://www.api.dormi.co.tz/images/305834409.jpg即可打开图片,但后续上传的图片不会自动同步,建议优先解决软链问题。
内容的提问来源于stack exchange,提问作者Petpark kisenya
相关产品推荐
相关产品推荐

