在父根目录中使用Laravel中的PHP创建目录


create directory in parent root with php in laravel

我的站点在目录中/var/www/mysite.i 使用 laravel 并希望/uploads目录中创建目录 .so/uploads 是/var 之外

的目录。
/var/www/mysite
/uploads

我为/uploads设置了0777权限,但发生了权限被拒绝的情况。我尝试使用此代码

<?php mkdir('/uploads', 0777 , true) ; ?>

您的网络用户(www-data,apache或其他任何用户)受到操作系统的限制,只能使用/var/www。您无法读取,写入,删除/var/www以外的任何文件。所以这不是一个拉拉维问题。

创建

给定路径的所有目录(文件夹)的函数。无需编写代码即可创建给定路径的每个目录(文件夹)。它将创建所有目录(文件夹)。

喜欢:如果要创建目录结构,例如
组织/1/用户/1/

所以你只需要用目录路径调用这个函数,比如
$directories_path = 'organizations/1/users/1/';
创建上传目录($directories_path);

/*
* Method Name : createUploadDirectories
* Parameter : null
* Task : Loading view for create directries for upload
*/
if ( ! function_exists('createUploadDirectories')){
    function createUploadDirectories($upload_path=null){
        if($upload_path==null) return false;
        $upload_directories = explode('/',$upload_path);
        $createDirectory = array();
        foreach ($upload_directories as $upload_directory){
            $createDirectory[] = $upload_directory;
            $createDirectoryPath = implode('/',$createDirectory);
            if(!is_dir($createDirectoryPath)){
                $old = umask(0); 
                mkdir($createDirectoryPath,0777);// Create the folde if not exist and give permission
                umask($old); 
            }               
        }
        return true;
    }
}

这样做:

Use File;
File::makeDirectory(base_path() . '/path/to/directory', 0775, true);

如果/path 不存在,这将尝试创建它。然后/path/to 如果它不存在。最后是/path/to/directory,如果它不存在。如果成功创建所有创建的目录,则将返回 true。

如果要将目录放在公共路径中;请使用:

File::makeDirectory(public_path() . '/path/to/directory', 0775, true);

来源: 拉拉维尔食谱