CodeIgniter - Message: mkdir(): Permission denied on Ubuntu

旧街凉风 提交于 2019-12-02 06:00:31

问题


I'd like some help please. I have this PHP script inside my Post_model constructor

$dir = FCPATH . 'uploads' . DIRECTORY_SEPARATOR . 'posts'; 
if (!is_dir($dir)) {
    mkdir($dir, 0755, true);
} 

which shows me this error:

Severity: Warning

Message: mkdir(): Permission denied

The main idea is that the project has the ability to create users and these users can upload images, or create folders-albums which are stored in the uploads folder.

I've been struggling to fix this error the last days and can't find a solution. I have tried this code and on Windows and works great, but not on Linux (Ubuntu 14.04)


回答1:


Please try chmod 777 -R . in your directory




回答2:


Even i had same problem , i tried with umask, it worked. you can do like this,

$old = umask(0);
mkdir($dir, 0755, true);
umask($old);



回答3:


[How to Create Directory in PHP / CodeIgniter] (http://codedpoint.16mb.com/index.php/viewCode?topic=Create%20Directory%20-%20CodeIgnitor)




回答4:


I suggest you manually create 'uploads' folder and give it 777 permission (not recursive) and then in your php script do the following:

if(!is_dir('./uploads/posts')) //create the folder if if does not already exists { mkdir('./uploads/posts',0755,TRUE); }

by this, every time your script tries to create a new directory, it will have the permission to do so since you are creating the new directory inside uploads which has 777.




回答5:


the issue probably is the mask :)

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 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
                umask($old_mask);
            }
        }
    }
}


来源:https://stackoverflow.com/questions/32861261/codeigniter-message-mkdir-permission-denied-on-ubuntu

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!