2015-10-10 15:03:44 4038次浏览 2条回答 0 悬赏 100 金钱

model代码如下:

public function upload(){
    if($this->validate()){
        if(!file_exists('upuploads/'.date('Y/m/d',time()))){
            mkdir('upuploads/'.date('Y/m/d',time()));
        }
        $this->imageFile->saveAs('uploads/'.date('Y/m/d',time()).'/'.rand(000,999).'.'.$this->imageFile->extension);
        return true;
    }else{
        return false;
    }
}
  1. 报错:mkdir(): No such file or directory
  2. 尝试解决:修改uploads的权限为777,但未来创建的文件夹都没有777权限

最佳答案

  • 桃筱筱 发布于 2015-10-10 16:58 举报

    linux服务器 mkdir() 后加 chmod()

    2 条回复
    回复于 2015-10-10 19:35 回复

    谢谢。将代码贴于此,大家可能有更好的办法,或简化代码

    $dirArray = explode('/','uploads/'.date('Y/m/d',time()));
                    for($i=0;$i<count($dirArray);$i++){
                        if(!file_exists($dirArray[$i])){
                            mkdir($dirArray[$i]);
                            chmod($dirArray[$i],0777);
                        }
                        if($i==count($dirArray)-1){
                            break;
                        }
                        $dirArray[$i+1]=$dirArray[$i].'/'.$dirArray[$i+1];
                    }
    
    回复于 2015-10-10 20:08 回复

    mkdir第三个参数带true,就可以递归创建。不需要用到for循环这么麻烦。

    觉得很赞
  • 回答于 2015-10-10 15:48 举报
     mkdir('upuploads/'.date('Y/m/d',time()),0777,true);
    
    3 条回复
    回复于 2015-10-10 16:05 回复

    报错:mkdir(): Permission denied
    应该是服务器没有管理员权限,无法对文件夹权限进行修改吧

    回复于 2015-10-10 20:26 回复

    通常将跑webserver的用户(比如www-data)加入到你的web目录的组用户,然后给组用户赋予rw权限即可。

    回复于 2015-10-11 22:50 回复

    谢谢,已实现,按照这个方法更简便了。

    觉得很赞
您需要登录后才可以回答。登录 | 立即注册
杨淇
副总裁

杨淇 西南

注册时间:2015-09-25
最后登录:2022-04-12
在线时长:51小时48分
  • 粉丝12
  • 金钱5620
  • 威望10
  • 积分6230

热门问题