Laravel 5.2 Storage :: makeDirectory($ dir)不创建目录

时间:2016-06-29 16:08:09

标签: php laravel ubuntu permissions laravel-5.2

我对这种逻辑感到困惑。我正在使用Laravel 5.2 Storage :: makeDirectory创建两个路径,第一个( video / )是正确创建的,另一个(缩略图/ )不是。< / p>

$user = 1;

if(!File::exists(public_path() . "/video/$user"))
{
    Storage::makeDirectory(public_path() . "/video/$user", 0777);
}

$file = rand(1111111111111, 9999999999999);
$imgpath = public_path() . "/thumbnails/$file";

if(!File::exists($imgpath))
{
    Storage::makeDirectory($imgpath, 0777);
}

以下是权限配置:

drwxrwxrwx 2 ubuntu ubuntu 4096 Jun 28 19:33 thumbnails/
drwxrwxrwx 3 ubuntu ubuntu 4096 Jun 29 15:21 video/

我也可以使用 $ imgpath 中的给定字符串从cli创建一个目录:

mkdir /home/ubuntu/workspace/site/public/thumbnails/6300643852187

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

嗯......我知道发生了什么事。

File::exists(public_path() . "/video/$user")正在寻找这个:

  

/家庭/ ubuntu的/工作区/站点/公共/视频/ Ñ


Storage::makeDirectory(public_path() . "/video/$user")正在以下内容中创建目录:

  

/家庭/ ubuntu的/工作区/站点/存储/应用程序/公共/视频/ Ñ


所以我可以转到 site / config / filesystems.php 并更改 app app / public 的路由;您可以使用帮助器storage_path('app')来检查它们。
但是,相反,我决定将视频保存在 存储/应用/公共/视频 存储/应用/公共/缩略图 ,我收到了一些包裹错误。

但是,这两条路径都是可写的,现在应该可以使用了。

答案 1 :(得分:1)

Laravel 5.2

if(!Storage::disk('public')->has('image/path/directory/')){
    Storage::disk('public')->makeDirectory('image/path/directory/');
}

答案 2 :(得分:1)

你需要强制它像这样做

$dr = $_SERVER['DOCUMENT_ROOT'];
$is_dir = File::makeDirectory($dr.'/uploads/images/'.$user.'/thumbs/', 0755, true, true);

0755是文件夹权限

第一个是递归创建文件夹

第二个是强迫它去做