bluehost服务器上的mkdir权限被拒绝


mkdir permission denied on bluehost server

我有以下脚本来上传文件。除了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。为什么会发生这种情况,我该如何解决?

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

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

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

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

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

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

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

去掉前面的正斜杠后,现在就可以工作了。:)如果你想知道我在那里的"public_path()"函数,我试着把它回声到页面上,结果它是空的,我不知道为什么其他人可以解释。