Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter-消息:mkdir():Ubuntu上的权限被拒绝_Php_Codeigniter_File Permissions_Mkdir - Fatal编程技术网

Php CodeIgniter-消息:mkdir():Ubuntu上的权限被拒绝

Php CodeIgniter-消息:mkdir():Ubuntu上的权限被拒绝,php,codeigniter,file-permissions,mkdir,Php,Codeigniter,File Permissions,Mkdir,我想要一些帮助。我的Post_模型构造函数中有这个PHP脚本 $dir = FCPATH . 'uploads' . DIRECTORY_SEPARATOR . 'posts'; if (!is_dir($dir)) { mkdir($dir, 0755, true); } 这向我显示了这个错误: Severity: Warning Message: mkdir(): Permission denied 其主要思想是,该项目能够创建用户,这些用户可以上传图像,或者创建文件夹和存

我想要一些帮助。我的Post_模型构造函数中有这个PHP脚本

$dir = FCPATH . 'uploads' . DIRECTORY_SEPARATOR . 'posts'; 
if (!is_dir($dir)) {
    mkdir($dir, 0755, true);
} 
这向我显示了这个错误:

Severity: Warning

Message: mkdir(): Permission denied
其主要思想是,该项目能够创建用户,这些用户可以上传图像,或者创建文件夹和存储在uploads文件夹中的相册


过去几天我一直在努力修复这个错误,但找不到解决方案。我在Windows上尝试过这段代码,效果很好,但在Linux(Ubuntu14.04)上没有。

即使我有同样的问题,我也尝试过使用umask,效果很好。你可以这样做

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

请尝试chmod 777-R。在您的目录中

[如何在PHP/CodeIgniter中创建目录]
()

我建议您手动创建“uploads”文件夹并授予其777权限(非递归),然后在php脚本中执行以下操作:

if(!is_dir('./uploads/posts')//如果if不存在,则创建文件夹
{
mkdir('./上传/发布',0755,真);
}


这样,每次脚本尝试创建一个新目录时,它都将拥有这样做的权限,因为您在上载中创建的新目录有777个目录。

问题可能是掩码:)


请看这里欢迎来到SO。请提供完整的答案,而不仅仅是链接(链接将不会永远工作)。
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);
            }
        }
    }
}