【发布时间】:2015-02-17 20:17:39
【问题描述】:
我有以下脚本来上传文件。除了 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。为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
我不熟悉 BlueHost,但是您是否检查过您的服务器(我猜是 Apache 或 Nginx)是该目录的所有者?如果没有,755 将阻止服务器向该目录写入任何内容。
-
我的猜测是
/uploads/data/users/这个链中的其中一个文件夹还不存在,另外你不需要设置为0777脚本应该在suexec下执行 -
请我对linux一无所知,请给我一些演示。
-
@Joel Hinz 我已经按照您的要求进行了检查,我的服务器确实是该目录的所有者。
-
@cmorrisey 文件夹“users”不存在,这就是 mkdir() 的全部意义,条件应该检查它是否存在,如果不存在,它应该在服务器上创建指定的文件夹权限,还是那样不行?
标签: php laravel file-upload vps bluehost