我正在尝试从php中创建文件夹。每当我使用权限0777的mkdir函数时,我会得到一个只读文件夹。我希望阅读这个文件夹&写。
父文件夹(drive/
)对每个用户都是完全可写和可读的。
这就是我使用的:mkdir(ABSPATH . 'drive/' . $folderName, 0777);
我还试图在没有任何其他参数的情况下使用它:mkdir(ABSPATH . 'drive/' . $folderName);
为什么会这样做以及如何解决这个问题,以便我可以生成具有写访问权限的文件夹?
答案 0 :(得分:2)
在共享环境中,mkdir无法正确设置权限。解决方法是在您创建目录后使用chmod()设置chmod。
答案 1 :(得分:1)
您也可以使用mkdir
获得写入权限。以下是代码
<?php
$dir = 'myDir';
// create new directory with 744 permissions if it does not exist yet
// owner will be the user/group the PHP script is run under
if ( !file_exists($dir) ) {
mkdir ($dir, 0744);
}
file_put_contents ($dir.'/test.txt', 'Hello File');
从here
找到来源答案 2 :(得分:1)
问题可能是面具:)
if (!function_exists('mkdir_r')) {
/**
* create directory recursively
* @param $dirName
* @param int $rights
* @param string $dir_separator
* @return bool
*/
function mkdir_r($dirName, $rights = 0744, $dir_separator = DIRECTORY_SEPARATOR) {
$dirs = explode($dir_separator, $dirName);
$dir = '';
$created = false;
foreach ($dirs as $part) {
$dir .= $part . $dir_separator;
if (!is_dir($dir) && strlen($dir) > 0) {
$created = mkdir($dir, $rights);
}
}
return $created;
}
}
if (!function_exists('ensure_dir')) {
/**
* ensure directory exist if not create
* @param $dir_path
* @param int $mode
* @param bool $use_mask
* @param int $mask
* @return bool
*/
function ensure_dir($dir_path, $mode = 0744, $use_mask = true, $mask = 0002) {
// set new mask
$old_mask = $use_mask && $mask != null
? umask($mask)
: null;
try {
return is_dir($dir_path) || mkdir_r($dir_path, $mode);
} finally {
if ($use_mask && $old_mask != null) {
// restore original mask
umask($old_mask);
}
}
}
}