glob() 返回空目录路径问题


glob() returning empty directorypath issue

我正在尝试通过这样做从文件夹中加载所有图像:

<?php
 $dirname = "/../../../properties-frontpage/";
 $images = glob($dirname."*.*");
 foreach($images as $image) {
     echo '<div class="item" style="background-image:url(' . $image  . ')" ></div>';
 }
 echo '<pre>';
 var_dump($images);
 echo '</pre>';
?>

但是,它返回一个空数组,这让我发疯,我可能以错误的方式定义$dirname,但无法弄清楚如何。

谢谢大家

编辑 01

代码编写在包含中,该包含位于名为 includes 的文件夹中这是我的文件夹结构:

AWF>包括> WP 内容>主题

properties-frontpage文件夹位于wp-content文件夹中。

包含包含在"我的AWF主题"文件夹中的"front-page.php"中。

所以我需要走三层,对吧?

编辑 02多亏了Stefan Gehrig的解决方案,我现在输出了这些url: /Users/boriskamp/Documents/Local Websites/MijnAWF/wp-content/themes/AWF/includes/../../../properties-frontpage/12.jpg

我怎样才能把它们变成

/Users/boriskamp/Documents/Local Websites/MijnAWF/wp-content/properties-frontpage/12.jpg这样他们作为src工作?

相对路径必须相对于正在执行的脚本而不是相对于包含的脚本定义。有时这很难弄清楚,我不是WP专家。大多数情况下,使用包含的文件时,在已知的绝对路径上透视相对路径更容易。有一个__DIR__常量始终指向当前文件所在的目录。

所以你可以做这样的事情

$dirname = __DIR__."/../../../properties-frontpage/";

这将解决类似

/<<absolute path>>/wp-content/themes/AWF/includes/../../../properties-frontpage/

关于编辑02

删除..遍历可以使用realpath()来完成(请阅读有关符号链接发生的文档,以防目标路径不存在(。但是,使路径可通过 Web 服务器访问更为复杂。您不能简单地假设您只需要剥离/Users/boriskamp/Documents/Local Websites/部分,使路径相对于文档根目录。根据您的服务器配置(例如别名或路径映射(,此任务会变得任意复杂,并且超出了原始问题的范围。也许有一个WP助手可以做到这一点 - 我不知道。

改用这段代码:

<?php
 $dirname = "../../../properties-frontpage/"; // Remove the first /
 $images = glob($dirname."*.*");
 foreach($images as $image) {
     echo '<div class="item" style="background-image:url(' . $image  . ')" ></div>';
 }
 echo '<pre>';
 var_dump($images);
 echo '</pre>';
?>