簡體   English   中英

PHP函數'scandir'在Windows上托管的WordPress上不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM