【问题标题】:Access all the contents of an alias directory in PHP在 PHP 中访问别名目录的所有内容
【发布时间】:2015-09-28 18:06:20
【问题描述】:

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

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

我想访问目录“D:/farewell/2/”中的所有图像文件。为此,建议在 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'/>";
?>

这非常有效,因为 images 是存在于 htdocs 文件夹中的一个文件夹。

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

【问题讨论】:

  • 您所犯的错误与您第一次提出这个问题时所犯的错误完全相同......还有一些新错误。
  • @CD001 对不起,我应该删除这个问题,因为你已经在另一个帖子中回答了这个问题吗?
  • 不,这很好 - 重复这个问题的礼仪很糟糕;重复项通常会被锁定。

标签: php apache


【解决方案1】:

您的 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"/>';
}

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

【讨论】:

    【解决方案2】:

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

    别名指令“将 URL 映射到文件系统位置”(doc)和 php glob()“查找与模式匹配的路径名”。所以你不能给 glob 一个 URL。

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

    【讨论】:

    • 我们如何设置 php 对文件夹的访问权限?我已将文件夹设置为所有人共享。
    • @kamal0808 取决于您的设置:目录和文件的文件系统权限,至少还有 open_basedir。你在窗户上,我不确切知道。你试过glob("D:/farewell/2/*"); 吗?如果结果为空,则说明您没有权限...
    猜你喜欢
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2015-07-30
    相关资源
    最近更新 更多