我通过配置 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 文件夹中的文件夹。
那么,访问别名目录的过程是什么?
答案 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
作为该请求的结果。