2014-03-05 58 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