为什么get_headers为合法URI返回404 Not Found?

时间:2016-03-01 19:19:52

标签: php amazon-s3 handlebars.js

我有一个使用handlebars.js来渲染页面的模板。在每个循环内部,我引用存储在S3上的一些图像。有些图片还不存在,所以我有一个'no-photo'占位符代替我。因此,当我检查标题以确定是否显示占位符时,我每次都会得到404,即使某些图像存在并显示。

{#each listings}}
    <div class="wpbl handlebars">
          <div class="IDX-row-content">
              <!-- content row -->
              <div class="IDX-resultsCol IDX-columnOne">
                  <div class="IDX-resultsPhoto">
                    <?php
                    $image_src = 'https://s3-us-west-2.amazonaws.com/myS3bucket/{{ln}}_0.jpg';
                    $headers = get_headers($image_src);
                    if($headers[0] == 'HTTP/1.1 404 Not Found')
                    {
                        // The image doesn't exist in the DOM
                        $image_src = get_stylesheet_directory_uri() . '/images/no-photo.png';
                    }
                    ?>
                      <img src="<?php echo $image_src; ?>" class="IDX-resultsPhotoImg">
                  </div>
              </div>
              <div style="display:none;">
                <?php echo var_dump($headers); ?>
              </div>
 // blah blah remaining code

代码全部有效,因为现有的图像会按照每个列表的预期进行渲染。但我很困惑,为什么我从每张图片中得到404 Not Found回复。当我回应var_dump时:

array(7) {
  [0]=>string(22) "HTTP/1.1 404 Not Found"
  [1]=>string(34) "x-amz-request-id: ADFAC90C00E2830A"
  [2]=>string(88) "x-amz-id-2:PMbIxENYEpzSPENjvaM9nkR7PaxSQoyGreaomHZqA15CXyZ0Rz/qwIfK/jxJgB9GUwqpi4DtkgY="
  [3]=>string(29) "Content-Type: application/xml"
  [4]=>string(35) "Date: Tue, 01 Mar 2016 18:43:32 GMT"
  [5]=>string(17) "Connection: close"
  [6]=>string(16) "Server: AmazonS3"
}

当我检查html时,图像就在那里:

screenshot from Web Inspector

我缺少什么想法?

0 个答案:

没有答案