Laravel部署至服务器后部分图片上传失败但本地正常怎么解决
Laravel生产环境部分图片上传失败问题处理
我昨日参考教程将Laravel站点部署到服务器,将非public目录的文件存放在public_html外的独立文件夹,public目录内容放置到public_html目录下。上传图片时仅部分图片会抛出「The foto failed to upload.」错误,本地开发环境可以正常上传这些报错的图片。尝试关闭验证规则后仍出现相同错误,可以排除验证环节的问题。
相关代码片段
自定义图片处理控制器代码
public function store(ParceiroPost $request) { $validated_data = $request->validated(); $newParceiro = new Parceiros(); $newParceiro->nome = $validated_data['nome']; $newParceiro->url_parceiro = $validated_data['link']; if ($request->hasFile('foto')) { $image = $request->file('foto'); $input['imagename'] = time().'_'.$newParceiro->nome.'.png'; $destinationPath = public_path('storage/parceiros'); $img = Image::make($image->path()); $img->resize(1280, 868)->save($destinationPath.'/'.$input['imagename']); $newParceiro->foto_url = $input['imagename']; } $newParceiro->save(); return redirect()->route('admin.parceiros') ->with('alert-msg', 'Parceiro " '. $request->nome .' " foi criado com sucesso!') ->with('alert-type', 'success'); }
默认存储逻辑控制器代码
public function store(StaffPost $request) { $validated_data = $request->validated(); $newUser = new User; $newUser->email = $validated_data['email']; $newUser->name = $validated_data['nome']; $newUser->tipo = $validated_data['tipo']; $newUser->password = Hash::make($validated_data['password']); if ($request->hasFile('foto')) { $path = $request->foto->store('fotos_perfil'); $newUser->foto_url = basename($path); } $newUser->save(); $newUser = User::where('email', $validated_data['email'])->first(); //dd($newUser); $newUser->markEmailAsVerified(); return redirect()->route('admin.staff') ->with('alert-msg', 'Staff " '. $newUser->name .' " foi criado com sucesso!') ->with('alert-type', 'success'); }
表单验证规则代码
public function rules() { if(request()->isMethod('put')) // 也兼容patch请求 { return [ 'nome' => 'required', 'foto' => 'image|max:8192', // 最大大小8Mb 'link' => 'nullable', ]; } else { return [ 'nome' => 'required', 'foto' => 'image|max:8192|required', // 最大大小8Mb 'link' => 'nullable', ]; } }
排查过程
注释所有业务逻辑代码仅保留返回语句时依然触发该错误,确认属于PHP层面的配置问题。
最终解决方案
首次部署站点时未注意php.ini文件存在上传大小相关限制,调整upload_max_filesize、post_max_size等参数的取值至符合业务需求后,即可正常上传大体积图片。
内容的提问来源于stack exchange,提问作者Gonçalo Bastos
相关产品推荐
相关产品推荐

