glob()成功识别文件,但在尝试访问它时我得到“404”?

时间:2014-05-11 17:35:06

标签: php directory lamp glob

我的本​​地LAMP环境正在使用AMPPS for apache。我的项目目录结构如下:

public/
    index.php
    css/
    js/
    img/
        layout/
            banners/
                banner1.jpg
                banner2.jpg
                banner3.jpg
src/
    config.php
    library/
    templates/
        header.php
        footer.php
        nav.php

header.php 里面我有以下代码:

  <ul class="slideshow">
    <?php
        $images = glob( $GLOBALS["config"]["paths"]["images"]["layout"] . "/banners/*.jpg" );
        foreach($images as $image){
          $out = "<li><img alt='banner' width=1280 height=320 src='".$image."'/>ASC Online</li>";
          ChromePHP::log($out);
          echo $out;
        }
    ?>
  </ul>

(全局$ config在src/config.php文件中设置。)

当代码被回显时,它似乎是正确的:

<li><img alt='banner' width=1280 height=320 src='/Users/Tom/Web/dev/asconline.local/public/img/layout/banners/banner1.jpg'/>ASC Online</li> 
<li><img alt='banner' width=1280 height=320 src='/Users/Tom/Web/dev/asconline.local/public/img/layout/banners/banner2.jpg'/>ASC Online</li> 
<li><img alt='banner' width=1280 height=320 src='/Users/Tom/Web/dev/asconline.local/public/img/layout/banners/banner3.jpg'/>ASC Online</li>

如果我转到上面输出中指示的URL,图像文件就在那里......目录是正确的。

但是,在浏览器中,当浏览器尝试检索文件时,我收到 404:找不到文件

这不是权限,因为我能够在项目目录中获取其他文件/图像。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您的glob正在返回相对于驱动器根目录的路径。通过浏览器访问时,它相对于文档根目录完成,该文件很可能是public_html文件夹。

您需要执行以下操作:

"... src='".substr($image,strlen($_SERVER['DOCUMENT_ROOT']))."' ..."