Я загружаю изображения динамически из S3 Bucket на основе имени файла и пытаюсь отобразить их на веб-странице.Код полностью заполняет массив URL.Тем не менее, когда я создаю HTML в php, предоставив img src в качестве URL с помощью функции foreach, изображения не отображаются.
Ниже приведен код:
$objects = json_decode(exec($pyexec) , true);
//echo gettype($objects);
foreach ($objects as $object) {
$num = $s3->getObjectUrl(BUCKET, $object);
//echo $num;
$imgname = basename($num);
echo '<div class="col-xs-6 col-sm-2 ">';
echo '<img src="'.$num.'" id="thumbNails'.$imgname.'" width="200" height="200" class="img" alt="Generic placeholder thumbnail" /></div>';
}
В этомgettype($objects)
печатает, что это массив.Когда я использую print_r($objects)
, он печатает следующее:
Array
(
[0] => 1205944447_1544090338.044875.jpg
[1] => 1205944447_1544090338.456757.jpg
[2] => 1205944447_1544090338.870485.jpg
[3] => 1205944447_1544090340.111561.jpg
)
Изнутри foreach, когда я отображаю URL, я получаю следующее:
https://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090338.044875.jpghttps://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090338.456757.jpghttps://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090338.870485.jpghttps://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090340.111561.jpg
Вместо заполнения функции foreach навеб-страница, когда я запускаю ее из консоли, я получаю следующий вывод:
<div class="col-xs-6 col-sm-2 "><img src="https://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090338.044875.jpg" id="thumbNails1205944447_1544090338.044875.jpg" width="200" height="200" class="img" alt="Generic placeholder thumbnail" /></div><div class="col-xs-6 col-sm-2 "><img src="https://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090338.456757.jpg" id="thumbNails1205944447_1544090338.456757.jpg" width="200" height="200" class="img" alt="Generic placeholder thumbnail" /></div><div class="col-xs-6 col-sm-2 "><img src="https://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090338.870485.jpg" id="thumbNails1205944447_1544090338.870485.jpg" width="200" height="200" class="img" alt="Generic placeholder thumbnail" /></div><div class="col-xs-6 col-sm-2 "><img src="https://myawsbuck123.s3.ap-south-1.amazonaws.com/1205944447_1544090340.111561.jpg" id="thumbNails1205944447_1544090340.111561.jpg" width="200" height="200" class="img" alt="Generic placeholder thumbnail" /></div>
Для меня все они выглядят нормально.Не уверен, почему именно изображения нельзя было увидеть на веб-странице.Я проверил разрешение S3 Bucket - у них открыт общий доступ как для корзины, так и для изображений в корзине.Однако, когда я пытаюсь заполнить изображения из локального каталога, подобный код выполняется без проблем.Как я могу отобразить изображения из корзины S3 и мой URL-адрес правильный?
Редактировать: я использую python для запроса таблицы DynamodB, чтобы получить имена изображений, а затем пытаюсь получить URL-адреса изображений на основена изображении и названии ведра.Когда я просто сбрасываю print_r($objects)
, ошибок нет.Однако, когда я использую PHP для создания галереи, я получаю следующую ошибку boto3 & php.
Traceback (most recent call last):
File "filterImages.py", line 2, in <module>
import boto3
File "/usr/local/lib/python2.7/dist-packages/boto3/__init__.py", line 16, in <module>
from boto3.session import Session
File "/usr/local/lib/python2.7/dist-packages/boto3/session.py", line 17, in <module>
import botocore.session
ImportError: No module named botocore.session
[Fri Dec 07 11:00:51.507209 2018] [:error] [pid 6767] [client ::1:64844] PHP Warning: Invalid argument supplied for foreach() in /var/www/html/getImages.php on line 48, referer: http://localhost/images.php