У меня есть шаблон, использующий handlebars.js для отображения страницы. Внутри каждого цикла я ссылаюсь на некоторые изображения, хранящиеся на S3. Некоторые изображения еще не существуют, поэтому вместо них у меня есть местозаполнитель «без фото». Поэтому, когда я проверяю заголовки, чтобы определить, показывать ли местозаполнитель, я каждый раз получаю 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 изображение прямо здесь:
Есть идеи, что мне не хватает?
Задача ещё не решена.
Других решений пока нет …