我对这种逻辑感到困惑。我正在使用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
有什么建议吗?
答案 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是文件夹权限
第一个是递归创建文件夹
第二个是强迫它去做