【问题标题】:php directoryIterator question - wrong path?php directoryIterator 问题 - 路径错误?
【发布时间】:2011-04-26 15:56:24
【问题描述】:

大家好, 我在这里误会了什么?

$dir = get_bloginfo('template_url').'/images/headers/';
echo $dir;
//ouput: myblog.com/wp-content/themes/mytheme/images/headers



$dir = new DirectoryIterator(get_bloginfo('template_url').'/images/headers/');
echo $dir;
//output: nothing at all! blank page!

控制台输出一个致命错误:

[2011 年 4 月 26 日] PHP 致命错误: 未捕获的异常'RuntimeException' 带消息 'DirectoryIterator::__construct(http://myblog.com/wp-content/themes/mytheme/images/headers/) [目录迭代器。--构造]: 无法打开目录:未实施' 在 /Users/myname/htdocs/myblog.com/wp-content/themes/mytheme/inc/header-image.php:3 堆栈跟踪:

0 /Users/myname/htdocs/myblog.com/wp-content/themes/mytheme/inc/header-image.php(3):

DirectoryIterator->__construct('http://oberperf...')

1 /Users/myname/htdocs/myblog.com/wp-content/themes/mytheme/header.php(69):

include('/Users/myname...')

2 /Users/myname/htdocs/myblog.com/wp-includes/theme.php(1112):

require_once('/Users/myname...')

3 /Users/myname/htdocs/myblog.com/wp-includes/theme.php(1088):

load_template('/Users/myname...', 真的)

4 /Users/myname/htdocs/myblog.com/wp-includes/general-template.php(34):

locate_template(数组,真)

5 /Users/myname 在 /Users/myname/htdocs/myblog.com/wp-content/themes/mytheme/inc/header-image.php

在第 3 行

知道这里出了什么问题吗?

【问题讨论】:

    标签: php path iterator directory


    【解决方案1】:

    看起来您传递的是 URL 而不是路径:

    DirectoryIterator->__construct('http://oberperf...')
    

    您应该将目录的完整本地路径名传递给构造函数。

    【讨论】:

    • 好的,没错。然而,这也不起作用:$dir = new DirectoryIterator('/Users/myname/htdocs/myblog.com/wp-content/themes/mytheme/images/headers/'); echo $dir;
    • DirectoryIterator 返回一个对象而不是字符串。您需要对其进行迭代: foreach ($dir as $item) { echo $item->getFilename(); }
    【解决方案2】:

    我很确定路径必须是文档根目录的绝对路径,而不是 URL。

    改用get_template_directory()

    $dir = new DirectoryIterator( get_template_directory() . '/images/headers/');
    echo $dir;
    

    【讨论】:

    • 谢谢,有道理。然而它不起作用!如果我尝试您的确切代码 $dir 只包含一个“。”点!那里没有路径。没有错误被抛出。如果我回显get_template_directory() . '/images/headers/',它可以正常工作,但是 DirectoryIterator 出于某种原因不会采用该值!
    • DirectoryIterator 构造函数返回的变量是 DirectoryIterator OBJECT,您不能直接将其回显到屏幕上。查看 DirectoryIterator 文档以获取有关如何使用它的更多信息us.php.net/manual/en/class.directoryiterator.php
    猜你喜欢
    • 2011-08-15
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 2014-12-30
    • 2021-01-24
    相关资源
    最近更新 更多