почему get_headers и file_get_contents отдают false, если файлы реально существуют?
$a = [
'http://cdn.io-opt.com/images/products/s.00419.png',
'http://cdn.io-opt.com/images/products/s.00440.png',
'http://cdn.io-opt.com/images/products/cf.01782.png',
'http://cdn.io-opt.com/images/products/pr.25474600.png',
'http://cdn.io-opt.com/images/products/pr.25474400.png',
'http://cdn.io-opt.com/images/products/w.62822.png',
'http://cdn.io-opt.com/images/products/w.00535.png',
'http://cdn.io-opt.com/images/products/988657_1.png',
'http://cdn.io-opt.com/images/products/XD10028.png',
'http://cdn.io-opt.com/images/products/w.00511.png',
'http://cdn.io-opt.com/images/products/XD10026.png',
'http://cdn.io-opt.com/images/products/f.U4604101_SafetyLock.png'
];
stream_context_set_default(
array(
'http' => array(
'protocol_version' => '1.1',
),
)
);
foreach ($a as $url){
$c = get_headers($url, 1);
$d = file_get_contents($url);
echo '<pre>';
var_dump($c);
echo '</pre>';
echo '<pre>';
var_dump($d);
echo '</pre>';
}
Все указанные файлы реально есть на сервере и открываются в браузере. Также они открываются и по протоколу https. Но указанные функции возвращают false. Почему? Вот этот ответ не помог.
Ответы (1 шт):
Возможно Вы слишком часто "долбили" данный сервис и попали под бан (может временный, может постоянный). Попробуйте сменить либо свой ip, либо запустить на другом сервере данный скрипт, ибо то что вы предоставили во всяком случае у меня запустилось без проблем (php 7.4.3) и отдало и картинки и хедеры. Проверил даже без указания stream_context_set_default - все работает замечательно. Как вариант - еще раз точно перепроверьте на "allow_url_fopen" либо через ini_get, либо через phpinfo()