1、经常在写路径的时候突然不知道改用正斜杠还是反斜杠,测试发现有时候两个可以通用,有时候则不可以,有谁有总结过的麻烦贴出来共享下。
2、偶然看到一个函数is_dir(filename)   ,函数功能是判断给定文件名是否是一个目录,请问什么才是目录,请具体给出个例子说明?我是在一个文件上传类中看到的,搞不明白为什么要加这么一个判断,有什么作用?    public function upload($savePath ='')
    {
        //如果不指定保存文件名,则由系统默认
        if(empty($savepath)) {
            $savePath = $this->savePath;
        }
        // 检查上传目录
        if(!is_dir($savePath)) {
            // 检查目录是否编码后的
            if(is_dir(base64_decode($savePath))) {
                $savePath   =   base64_decode($savePath);
            }else{
                $this->error  =  '上传目录'.$savePath.'不存在';
                return false;
            }
        }else {
            if(!is_writeable($savePath)) {
                $this->error  =  '上传目录'.$savePath.'不可写';
                return false;
            }
        }

解决方案 »

  1.   

    统一用 /  也可以直接用 DIRECTORY_SEPARATOR 来得到系统分隔符
    为什么要判断 确保你要上传的文件夹存在 不然移动到那去?var_dump(is_dir('a_file.txt')) . "\n";
    var_dump(is_dir('bogus_dir/abc')) . "\n";var_dump(is_dir('..')); //one dir up
      

  2.   

    测试发现有时候两个可以通用
    你到LINUX下就会有区别了,所以还是都用反斜杠吧
      

  3.   

    请看清楚判断是if(!is_dir($savePath)) //如果不是目录的话才执行,好像不是检查文件夹是否存在吧?
      

  4.   

    问题1:1、经常在写路径的时候突然不知道改用正斜杠还是反斜杠,测试发现有时候两个可以通用,有时候则不可以,有谁有总结过的麻烦贴出来共享下。
    答:主要是windows和linux环境区别! win下面物理路径是\  ,linux下是/ .问题2:偶然看到一个函数is_dir(filename) ,函数功能是判断给定文件名是否是一个目录,请问什么才是目录,请具体给出个例子说明?我是在一个文件上传类中看到的,搞不明白为什么要加这么一个判断,有什么作用?
    答:目录在windows和linux下的精确定义都不同.不过简单点的话你可以把他们都理解成是可以装文件和其他目录的结点.类似于文件夹.至于你在3楼说的这个问题,是用于判断当前路径是否是个目录,相当于文件夹!这样你就清楚怎么回事了吧!在linux下后缀名是无效的,可以任意取.这点和win下面不一样!
      

  5.   

    linux下的目录的定义你可以参考下linux系统管理类似的书籍!里面有详细说明!
      

  6.   

    没看清 
    他这么写目的就是防止$savePath传进来这个值是 base64_encode编码过的
      

  7.   

    统一用 / 
    win和linux都能识别
      

  8.   


    //DIRECTORY_SEPARATOR是php常量 ,路径斜杠问题解决
    define('DS', DIRECTORY_SEPARATOR);
      

  9.   


    目录在windows和linux下的精确定义都不同.不过简单点的话你可以把他们都理解成是可以装文件和其他目录的结点.类似于文件夹.至于你在3楼说的这个问题,是用于判断当前路径是否是个目录,相当于文件夹!这样你就清楚怎么回事了吧!在linux下后缀名是无效的,可以任意取.这点和win下面不一样!
      

  10.   

    我测试is_dir函数发现D:\DedeAMPZ\WebRoot\Default\shuguangcms\Attachments\product是目录,而Attachments\product不是目录,这个怎么解释呢?
      

  11.   

    windows和linux环境区别! win下面物理路径是\ ,linux下是/