Laravel项目图片无法显示问题排查求助
Laravel 项目图片无法加载问题排查与解决
问题概述
更换电脑后,WAMP本地部署的Laravel作品集网站可正常读取数据库项目数据,但项目图片显示损坏图标。首页通过Storage::url('/images/Homeimage.jpg')加载的图片正常,仅用户上传的项目图片无法显示。已尝试使用Storage::url/asset助手函数、执行php artisan storage:link、清除缓存等操作,此前在台式机运行正常。
相关代码
存储图片的控制器方法(storeProject)
public function storeProject(Request $request) { //dd($request->all()); // Valider les données du formulaire $validatedData = $request->validate([ 'name' => 'required|string|max:191', 'image_1' => 'required|file|image|mimes:jpg,jpeg,png|max:4000', 'description' => 'required|string', 'url' => 'required|url', 'customer' => 'required|string|max:191', 'mission' => 'required|string|max:191', 'tags' => 'nullable|array', ]); //dd($validatedData); // convert string to array $mission = $validatedData['mission'] ? [$validatedData['mission']] : []; //Enregistrer les image sur notre serveur $imagePaths = []; $images = [$request->file('image_1'), $request->file('image_2'), $request->file('image_3')]; foreach ($images as $image) { if ($image) { $filename = time() . '-' . $image->getClientOriginalName(); $path = $image->storeAs('public/images/' . $filename); $imagePaths[] = $filename; } } // Nouveau projet avec les données validées du formulaire $project = new projet; $project->name = $validatedData['name']; $project->image_1 = $imagePaths[0] ?? null; $project->description = $validatedData['description']; $project->url = $validatedData['url']; $project->customer = $validatedData['customer']; $project->mission = $validatedData['mission']; $project->user_id = Auth::user()->id; $project->save(); // tags $tags = $validatedData['tags']; $project->addtags($tags); // categories $project->addCategory($mission); return redirect()->route('moderate')->with('success', 'Projet mis en Ligne avec succès.'); // redirection avec errors }
Blade视图图片引用
<img src="{{ asset('storage/images/' . $project->image_1) }}" alt="{{ $project->name }}">
filesystems配置
'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), 'throw' => false, ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', 'throw' => false, ], 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), 'endpoint' => env('AWS_ENDPOINT'), 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), 'throw' => false, ], ],
问题排查与解决步骤
1. 确认图片文件是否同步
控制器中storeAs('public/images/' . $filename)会将图片存储到storage/app/public/images/目录。更换电脑时,若仅迁移了数据库和代码,未同步该目录下的图片文件,就会导致图片缺失:
- 检查新电脑
storage/app/public/images/目录中是否存在数据库记录的图片文件名; - 若缺失,将原电脑对应目录下的所有图片复制到新电脑的相同路径。
2. 重新创建存储软链接
WAMP环境下,符号链接可能因权限问题创建失败,即使执行过php artisan storage:link:
- 检查项目根目录
public/storage是否为软链接(指向../storage/app/public),若为普通文件夹则删除; - 在项目根目录重新执行:
php artisan storage:link - 若命令执行失败,手动创建Windows软链接(需管理员权限):
mklink /D "C:\wamp64\www\你的项目路径\public\storage" "C:\wamp64\www\你的项目路径\storage\app\public"
3. 验证图片URL有效性
打开浏览器开发者工具,查看图片的请求URL:
- 确认URL格式为
http://localhost/项目名/storage/images/图片文件名; - 直接在浏览器中输入该URL,若返回404,说明文件不存在或路径错误。
4. 检查目录权限
确保新电脑上storage/app/public/images/目录及文件的权限正确:
- Windows系统:右键目录→属性→安全,授予IIS用户或当前用户读取权限;
- 确认WAMP的Apache服务运行用户对该目录有读取权限。
内容的提问来源于stack exchange,提问作者Alexis P.
相关产品推荐
相关产品推荐

