【问题标题】:PHP RecursiveIteratorIterator: The system cannot find the path specified?PHP RecursiveIteratorIterator:系统找不到指定的路径?
【发布时间】:2013-09-17 10:55:52
【问题描述】:

当我想用RecursiveIteratorIteratorspl_autoload_register 自动加载类时出现此错误,

带有消息的未捕获异常“UnexpectedValueException” 'RecursiveDirectoryIterator::__construct(): 系统找不到 指定的路径。 (代码:3)

什么意思?

下面是我的类自动加载器,

function autoload_multiple_directory($class_name){

    // List all the class directories in the array.
    $array_directories = array(
        'core/controller/', 
        'core/model/',
        'core/helper/',
        'core/ext/'
    );

    $parts = explode('\\', $class_name);

    // Set the class file name.
    $file_name = end($parts).'.php';

    foreach($array_directories as $path_directory){

        $iterator = new RecursiveIteratorIterator(
            new RecursiveDirectoryIterator($path_directory),
            RecursiveIteratorIterator::SELF_FIRST
        );

        foreach ($iterator as $fileObject) {
            if ($fileObject->isDir()) {
                $files[] = str_replace('\\', '/', $fileObject->getPathname()).'/';
            }
        }


    }



    $array_directories = array_merge($array_directories,$files);

    // Loop the array.
    foreach($array_directories as $path_directory){
        if(file_exists(WEBSITE_DOCROOT.$path_directory.$file_name)){

            include WEBSITE_DOCROOT.$path_directory.$file_name;
        } 
    }
}


spl_autoload_register('autoload_multiple_directory');

错误行指向new RecursiveDirectoryIterator($path_directory),为什么?

【问题讨论】:

  • 因为路径不对!尝试 var_dump($path_directory) 并检查路径实际上是否正确。

标签: php spl php-5.4 spl-autoload-register


【解决方案1】:

我必须在new RecursiveDirectoryIterator(WEBSITE_DOCROOT.$path_directory) 中使用绝对路径,因为有时会通过 ajax 调用 init.php。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 2018-12-12
    • 2016-04-23
    • 2017-01-04
    • 2014-04-24
    • 2017-03-03
    相关资源
    最近更新 更多