У меня есть следующий скрипт PHP, который прекрасно работает в 99% случаев. Но он не будет загружать образ с этого сервера, который, я думаю, работает под управлением Varnish Cache.
<?php
$imglink = 'http://www.dirtrider.com/wp-content/uploads/2014/10/WD-10_1_14-001.jpg';
$ch = curl_init($imglink);
$fp = fopen('/home/path/www/tmp/test.jpg', "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_exec($ch);
fclose($fp);
Вы получаете 403 Forbidden
ошибка, если вы используете CURL для загрузки этого изображения. Вы можете обойти эту ошибку очень легко. Просто добавьте альтернативный пользовательский агент для вашего запроса CURL:
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
И эт вуаля! Отлично работает. Похоже, что Varnishe Cache блокирует запросы CURL, которые используют пользовательский агент по умолчанию CURL.
Других решений пока нет …