You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:57:04