无法将文件写入文件夹

时间:2016-06-19 10:03:33

标签: laravel putty filezilla

你好我仍然是将localhost项目变成putty服务器的新手,我也使用fileZilla。

我的上传图片功能在localhost中工作正常,但是当我在服务器中尝试它时。错误就是这样发生的 fileException

这是我的控制器

public function uploadPic(Request $request)
{
    $rules = ['image' => 'required|image|max:1024*1024*1'];

    $validator = \Validator::make($request->all(),$rules);

    if($validator->fails())
    {
        return redirect('profile')->withErrors($validator);
    }
    else
    {
        $file = $request->file('image');
        $file->move(public_path("profile-image/"), $file->getClientOriginalName());
        $thisUser = \Auth::id();

        $result = User::where('id','=',$thisUser)->update(['path_gambar'  => $file->getClientOriginalName()]);
    }
    return redirect('profile');
}

这是视图刀片

<form class="form-group-sm" action="{{ url('/upload-image') }}" method="post" enctype="multipart/form-data">
                <input id="token" type="hidden" name="_token" value="{{ csrf_token() }}">
                <div>
                    <input type="file" class="btn" name="image" id="file">
                </div>
             <span class="help-block">
                 <strong>{{ $errors->first('image') }}</strong>
             </span>
                <div style="text-align: inherit">
                    <button type="submit" class="btn btn-group-sm" value="upload" name="Submit">Upload</button>
                </div>
            </form>

1 个答案:

答案 0 :(得分:1)

您的问题是文件系统权限错误或错误的文件路径错误。

这在本地计算机上运行的原因是因为您的本地系统更加宽松 - 您的用户具有足够的权限来编写文件,或者系统可以帮助您解决错误的路径。这可能是因为您使用的操作系统(如Windows)不会像* nix服务器那样强制执行权限。

让我们来看看这些问题

  • 格式错误的文件路径
  • 不存在的文件路径
  • 权限不足

<强>路径

看看你的道路。双斜线是一件坏事。

  

/无功/网络/ HTML / Gracia的/公共//轮廓图像

可能存在一些潜在问题,但快速修复测试是使用realpath()

$file->move(realpath(public_path("profile-image/")), $file->getClientOriginalName());

现在您必须确认您的服务器上实际存在该目录。 SSH(putty)进入系统并运行:

ls -l /var/www/html/gracia/public

或FTP并导航到路径。

profile-image目录必须在那里。

<强>权限

SSH(putty)进入系统并运行:

ls -l /var/www/html/gracia/public

输出(示例):

drwxr-xr-x 2 gracia users 4096 Jun 19 12:27 profile-image

这些权限意味着只有用户gracia才能写入目录。 Web服务器可能不以此用户身份运行,因此您必须更改权限,以便该用户可以访问该目录。

以下是如何使目录可写入所有用户。

chmod -R 777 public-image/

输出(示例):

drwxrwxrwx 2 gracia users 4096 Jun 19 12:27 profile-image