在PHP中访问别名目录的所有内容

时间:2015-07-10 05:32:54

标签: php apache

我通过配置 httpd.conf (主Apache配置文件)创建了一个别名目录,如下所示:

Alias /farewell/ "D:/farewell/2/"
<Directory "D:/farewell/2">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

我想访问目录中的所有图像文件&#34; D:/告别/ 2 / &#34;。为此,建议使用PHP中的 glob(),如下所示:

<?php
 $path="farewell/*.*";
 $images=glob($path);
 foreach($images as $image)
     echo "<img src='$image' width='300'/>";
?>

但是,foreach循环不会跟随,因为 $ images 充当空数组。为什么会这样? 当访问服务器htdocs文件夹中存在的物理文件夹时,上面的代码很有效。

例如,

<?php
        $path="images/*.*";
        $images=glob($path);
        foreach($images as $image)
            echo "<img src='$image' width='300'/>";
?>

这非常有效,因为图片 htdocs 文件夹中的文件夹。

那么,访问别名目录的过程是什么?

2 个答案:

答案 0 :(得分:0)

你混合了两个完全不同的东西:Apache配置和php。请记住,php可以在没有Apache或没有任何网络服务器的情况下运行。

Alias指令&#34;将URL映射到文件系统位置&#34; (doc)和php glob()&#34;找到与模式匹配的路径名&#34;。因此,您无法为glob提供URL。

要从php访问别名目录,请使用路径为glob("D:/farewell/2/*.*")的glob,但您的php必须有权访问它,或者调用get_file_contents(www.example.com/farewell),并获得乐趣解析结果......

答案 1 :(得分:0)

您的php脚本通过http访问目录,但通过本地文件系统。但浏览器将通过http访问资源。

$path="farewell/*.*";这是一个相对路径(和掩码)。除非您的脚本位于"D:/,否则该路径将无法运行。

<?php
$baseuri = '/farewell/';
$baselocal='D:/farewell/2/';

foreach(glob($baselocal.'*') as $path) {
    $fname = basename($path);
    echo '<img src="', $baseuri, $fname,'" width="300"/>';
}

脚本&#34;扫描&#34; D:/告别/ 2 /但是将带有src属性的img元素(如/farewell/image1.jpg)放入html文档中。因此,浏览器将使用相同的协议(http / https)从同一主机(localhost?)请求它们,例如, http://localhost/farewell/image1.jpg。你的apache - 因为别名 - 会将D:/farewell/2/image1.jpg作为该请求的结果。