2014-03-05 113 views
0

我一直在製作一個函數來掃描目錄中的文件並掃描掃描目錄中的一個文件夾中的特定文件。爲了把簡單來說,文件掃描功能不可用

掃描總監 - >掃描文件夾中的董事特定文件

這是我一直在使用的代碼。

function __construct(){ 
$name = array_diff(scandir($_SERVER['CONTEXT_DOCUMENT_ROOT']."/apps/"), array('..', '.')); 
foreach($name as $key) 
{ 
    $this->installed = array($key); 
    while($this->check($key)){} 
} 
} 

function check($name){ 
if(file_exists($_SERVER['CONTEXT_DOCUMENT_ROOT']."/apps/".$name."/index.php")) 
{ 
    echo "YES"; 
} 
else 
{ 
    echo "NO"; 
} 
} 

但是即使文件已經在文件夾中,輸出也會返回「NO」。有針對這個的解決方法嗎?

+0

'回聲$ _ SERVER [ 'CONTEXT_DOCUMENT_ROOT']。 「/應用/".$名。」/ index.php文件「',以確保你正在尋找正確的文件夾正確的文件? – Michel

+0

array_diff返回一個數組。在你的情況下, $ name = array_diff(scandir($ _ SERVER ['CONTEXT_DOCUMENT_ROOT']。「/ apps /」),array('..','。')); $ name變量現在有一個數組。 而在這條線, 如果(file_exists($ _ SERVER [ 'CONTEXT_DOCUMENT_ROOT']。 「/應用/".$名。」/ index.php文件「)) 您使用的字符串連接在一起的同一個變量。 – Ramesh

+0

我正在尋找正確的文件在正確的文件夾...每個文件夾都有一個index.php,它仍然不輸出YES,我用foreach函數將數組更改爲字符串... –

回答

1

請再次檢查以下幾點並繼續。

  • 請檢查文件路徑
  • 你的文件夾和文件必須有權限讀取。
  • 對於指向不存在文件的符號鏈接,file_exists($ filename)函數將返回FALSE。
  • 您的$ name變量返回您在file_exists中使用的數組($ filename)
  • 我在代碼中做了一些修改,我已經檢查了它在此處的正常工作。

    $name = array_diff(scandir($_SERVER['CONTEXT_DOCUMENT_ROOT']."/apps/"), array('..', '.')); 
    foreach($name as $key) { 
    $this->installed = array($key); 
    while($this->check($key)){} 
           if(file_exists($_SERVER['CONTEXT_DOCUMENT_ROOT']."/apps/".$key."/index.php")){ 
        echo "YES"; 
    }else{ 
        echo "NO"; 
    } 
    } 
    
+0

此代碼是否檢查每個文件夾? –

+0

是的,它會檢查應用程序/文件夾內的所有文件夾。 – Andolasoft