PHP函数'scandir'无法在Windows上托管的WordPress上运行

时间:2015-06-17 12:04:31

标签: php windows wordpress

当我使用scandir函数时,我在linux和windows上获得了不同的结果。

Windows我只看到文件夹名称

Linux它在

下完成工作

我检查WordPress文件是否已被更改?

function find_all_files($dir, $deep) 
{ 
  if(strpos($dir,"wp-content") == false){

    $root = scandir($dir); 
    foreach($root as $value) 
    { 
      if($value === '.' || $value === '..') {continue;} 
      if(is_file("$dir/$value")) {
            $tmpFile = "$dir/$value";
            if(5000000>@filesize($tmpFile)){

            $result[]="$tmpFile";
            }
            continue;
        } 

    $tmp = "$dir/$value";
      if(strpos($tmp,"wp-content") == false){   
        if($deep == true){
            foreach(@$this->find_all_files("$dir/$value",true) as $value) 
            { 
              $tmpFile = $value;
                  if(5000000>@filesize($tmpFile)){

                    $result[]="$tmpFile"; 
                    }
            } 
        }
      }
    }
    //var_dump($result);

    return $result; 
    }
}

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题,一切都归结为:

1)如果您的意思是“在Windows上运行”操作系统,您需要包含,并从驱动器目录开始(其中服务器是已安装)$dir进行扫描。

2) Windows可能对分隔符很挑剔,将您的$ dir与Wordpress ABSPATH进行比较并尝试使用PHP常量DIRECTORY_SEPARATOR而不是您自己的'/'分隔符。

3)我假设您使用路径,网址(http://localhost/wordpress/...plugin/dir/)。这在Windows 7上运行,运行Uniserver(LAMP):

$rootfolder = 'startfolder';
$dir = plugin_dir_path(dirname( __FILE__ )).DIRECTORY_SEPARATOR.$rootfolder;
$files = array_slice(scandir($dir), 2);

但是,您需要使用ABSPATH或其他内容减少安装目录中的路径结束。但是我建议测试你的文件脚本在哪里,比如插件文件夹,以免在使用这种东西时消耗大量错误。

<强>提示! 关于scandir的PHP文档有很多关于阅读,翻版,扫描功能和问题的贡献函数。看看:http://php.net/manual/en/function.scandir.php

重要! 不要开始搞乱Windows文件夹访问,如果你这样做,请首先获取整个www目录的RAW副本,否则导出Worpdress安装可能会在Apache服务器上乱码

  

请记住,您是否设法从Wordpress安装新插件   管理员,你可能没有文件夹访问问题。

跳这个有帮助!