当我使用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;
}
}
答案 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安装新插件 管理员,你可能没有文件夹访问问题。
跳这个有帮助!