mkdir总是将文件夹设置为只读?

时间:2014-08-03 13:13:17

标签: php mkdir

我正在尝试从php中创建文件夹。每当我使用权限0777的mkdir函数时,我会得到一个只读文件夹。我希望阅读这个文件夹&写。 父文件夹(drive/)对每个用户都是完全可写和可读的。

这就是我使用的:mkdir(ABSPATH . 'drive/' . $folderName, 0777);

我还试图在没有任何其他参数的情况下使用它:mkdir(ABSPATH . 'drive/' . $folderName);

为什么会这样做以及如何解决这个问题,以便我可以生成具有写访问权限的文件夹?

3 个答案:

答案 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);
            }
        }
    }
}