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