[英]PHP function 'scandir' not working on WordPress hosted on windows
当我使用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)如果您的意思是“在Windows上运行” 操作系统 ,则需要包含该 操作系统 ,并从$dir
的驱动器目录 (安装服务器的位置)开始进行扫描。
2) Windows可能对分隔符ABSPATH
挑剔,将$ dir与Wordpress ABSPATH
进行比较,并尝试使用PHP常量DIRECTORY_SEPARATOR
而不是您自己的'/'
分隔符。
3)我假设您使用的是路径, 而不是 URL (http://localhost/wordpress/...plugin/dir/)
。 在运行Uniserver(LAMP)的Windows 7上,这对我有用:
$rootfolder = 'startfolder';
$dir = plugin_dir_path(dirname( __FILE__ )).DIRECTORY_SEPARATOR.$rootfolder;
$files = array_slice(scandir($dir), 2);
但是 ,您需要使用ABSPATH
或其他方法来减少从安装目录开始的路径结尾。 但是我建议测试文件脚本的位置,例如plugins文件夹,以免在处理此类内容时浪费大量的错误。
暗示! 有关scandir的PHP文档在阅读,检索,扫描功能和问题方面有很多贡献。 看看: http : //php.net/manual/en/function.scandir.php
重要! 不要开始迷惑Windows文件夹的访问,如果要这样做,请首先获取整个www目录的RAW副本,否则导出的Worpdress安装可能会在Apache服务器上实时混乱 。
记住,您是否设法通过Wordpress管理员安装了新插件,可能没有文件夹访问问题。
希望对您有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.