我的站点在目录中/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);
来源: 拉拉维尔食谱