在bluehost服务器上拒绝mkdir权限

时间:2015-02-17 20:17:39

标签: php laravel file-upload vps bluehost

我有以下脚本来上传文件。除了BlueHost新配置的VPS之外,我已经能够成功运行它。这是代码:

// Creating image upload path
$destinationPath = public_path() . sprintf("/uploads/data/users/%d/", Auth::user()->getId());
$realPath = sprintf("uploads/data/users/%d/", Auth::user()->getId());

if (!file_exists($destinationPath)) {
    mkdir($destinationPath, 0777, true);
}

$fileName = str_random(16);
$fileName = str_replace('/', 'y', $fileName);
$image_url = $realPath . '/' . $fileName . '.' . $ext;

if ($file->move($destinationPath, $fileName . '.' . $ext)) {
    $p->display_pic = $image_url;
}

这是我不断得到的错误:

mkdir(): Permission denied 

父文件夹的文件夹权限设置为755。为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:0)

购买域名时,通常会将其指向服务器上的文件夹。

按照说明,我在网上找到了如何安全地将我的laravel项目指向我的域名,而无需先通过公共文件夹,例如:

yahoo.com/home而不是yahoo.com/public_html/home

我移动并重命名了我的域名最初指向的文件夹,您会注意到我的代码是:

$destinationPath = public_path() . sprintf("/uploads/data/users/%d/", Auth::user()->getId());

现在通常意味着如果我的域所指向的文件夹的根目录中不存在,它将检查并创建指定的文件夹。

现在,由于我的域名不再指向该文件夹,我认为它试图在我的服务器的“home”目录中创建该文件夹,因此“权限被拒绝”

取出前面的正斜杠后,它现在有效。 :) 如果你想知道我在那里的“public_path()”功能,我试着将它回显到页面,它出现了空的,我不知道为什么别人可以解释。