生成的图片访问链接点击返回404错误求助
看起来你已经做了不少基础工作,但还是碰到了404的问题,我来帮你梳理几个可能的排查方向:
先确认符号链接是否真的创建成功
虽然你执行了php artisan storage:link,但有时候环境权限或者已有旧链接的问题会导致命令执行失败却没提示。你可以先手动检查项目根目录的public文件夹下有没有storage这个符号链接(Windows下是快捷方式),如果没有的话,先删除可能存在的残留文件,再重新执行:rm public/storage # Linux/Mac环境,Windows直接删除public下的storage快捷方式 php artisan storage:link执行后看到提示
The [public/storage] link has been created successfully.才说明链接创建成功。检查目录和文件名的大小写
如果你用的是Linux或Mac服务器,文件系统是区分大小写的。你的代码里用的是PlantHealthy作为目录名,一定要确保storage/app/public下的文件夹确实是PlantHealthy(首字母大写,Healthy的首字母也大写),而不是planthealthy或者其他大小写组合——哪怕只是一个字母大小写不对,都会导致404。验证URL生成是否正确
你用url('storage/PlantHealthy/' . $imageName)生成的链接,应该是类似http://你的域名/storage/PlantHealthy/123456.jpg的格式。你可以直接把这个链接复制到浏览器地址栏,看看是不是真的指向图片位置。另外,也可以试试用Laravel的asset()函数来生成链接,它处理静态资源路径更稳定:$plant->image = asset('storage/PlantHealthy/' . $imageName);检查文件和目录权限
服务器需要有读取图片文件的权限。在Linux环境下,你可以执行以下命令调整权限:chmod -R 755 storage/app/public/PlantHealthy chown -R www-data:www-data storage/app/public/PlantHealthy # 根据你的服务器用户调整,比如apache用户换成apache确认文件系统配置正确
打开config/filesystems.php,检查public磁盘的配置是否符合要求:'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ],这里的
url字段必须是你的APP_URL加上/storage,这样生成的访问链接才会和符号路径对应上。
先从符号链接和大小写这两个最常见的问题入手排查,应该能解决你的404问题。
内容来源于stack exchange




