我的网站位于/var/www/mysite
目录.i使用laravel并希望在/uploads
目录中创建目录.so / uploads除了/ var。
/var/www/mysite
/uploads
我为0777
设置/uploads
权限,但发生了拒绝许可。
我尝试使用此代码
<?php mkdir('/uploads', 0777 , true) ; ?>
答案 0 :(得分:0)
您的网络用户(www-data,apache或其中任何一个)受操作系统限制使用/var/www
。您无法读取,写入,删除/var/www
以外的任何文件。所以这不是一个laravel问题。
答案 1 :(得分:0)
创建给定路径的所有目录(文件夹)的函数。无需编写代码创建给定路径的每个目录(文件夹)。它将创建所有目录(文件夹)。
喜欢:如果你想创建像
的目录结构
organizations / 1 / users / 1 /
所以你只需要像目录路径一样调用这个函数
$ directories_path =&#39; organizations / 1 / users / 1 /&#39;;
createUploadDirectories($ 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;
}
}
答案 2 :(得分:0)
这样做:
Use File;
File::makeDirectory(base_path() . '/path/to/directory', 0775, true);
如果它不存在,这将尝试创建/ path。然后/ path / to,如果它不存在。最后是/ path / to /目录,如果它不存在的话。如果成功创建了所有创建的目录,则返回true。
如果要将目录放在公共路径中;使用方法:
File::makeDirectory(public_path() . '/path/to/directory', 0775, true);