0

我有这个函数可以创建一个目录输出数组。

public function getDirContents( $path )
{
     $dir = new RecursiveDirectoryIterator( $path, FilesystemIterator::SKIP_DOTS );

    // Flatten the recursive iterator, folders come before their files
    $it  = new RecursiveIteratorIterator( $dir, RecursiveIteratorIterator::SELF_FIRST );

    // Maximum depth is 1 level deeper than the base folder
    $it->setMaxDepth(1);

    $results = array();
    // Basic loop displaying different messages based on file or folder
    foreach ($it as $contents)
    {
        $fileInfo = array();
        if ( $contents->isFile() )
        {
            $fileInfo['dir'] = $it->getSubPath();
            $fileInfo['file'] = $contents->getFilename();
            $results[] = $fileInfo;
        }
    }


    return $results;
}

我在我创建的一个类中有这个,它按预期工作。我有一个较旧的脚本,我没有重写以使用这个类。所以我把这个函数(减去公共函数)放在另一个包含随机常用函数的文件中,并将该文件包含到我的旧脚本中。但是,当我调用它时,我得到了错误

PHP Fatal error:  Class 'FilesystemIterator' not found in /aaa/bbb/ccc/ddd/common.php on line 745

如果我删除 FilesystemIterator::SKIP_DOTS 它可以正常工作,除非我猜它会失去该功能。我很好奇为什么会这样。

其他可能或可能无法解释可能发生的事情的事情。

我成功使用它的类是主站点的一部分。它出错的脚本实际上是一个子域。我正在使用 php 5.3(单个文件)——这是 bluehost 用于选择 php 版本的配置,这就是我的设置方式。PHP 5.3(单个 php.ini)与 PHP 5.3 相同,但所有子目录都将使用 ~/public_html/php.ini

这就是为什么我的印象是我的子目录(子域)会使用该文件。

子域与主域中的 httaccess 不一样。

我不确定这些花絮是否有帮助,但我迷路了,而且我对此还很陌生。

任何帮助,将不胜感激。

4

0 回答 0