В этом примере у меня есть сервер с именем install64-7 к которому я install64-7 доступ, чтобы проверить наличие zip-файла, который не находится на сервере. Следующий PHP-код возвращает код возврата HTTP 200 даже если zip-файл не существует на сервере install64-7 .
$srcPath = "http://install64-7/TestApp.zip"; $ch = curl_init( $srcPath ); curl_setopt( $ch, CURLOPT_NOBODY, true ); curl_exec( $ch ); $retcode = curl_getinfo( $ch, CURLINFO_HTTP_CODE ); curl_close( $ch ); unset( $ch ); var_dump($retcode); exit;

Если я удалю опцию CURLOPT_NOBODY , запрос даст 404 ! посмотреть скриншот для второго запроса
$srcPath = "http://install64-7/TestApp.zip"; $ch = curl_init( $srcPath ); //curl_setopt( $ch, CURLOPT_NOBODY, true ); curl_exec( $ch ); $retcode = curl_getinfo( $ch, CURLINFO_HTTP_CODE ); curl_close( $ch ); unset( $ch ); var_dump($retcode); exit;

Как это возможно, чего мне не хватает? Что это за колдовство по поводу опции CURLOPT_NOBODY ? Спасибо за любую помощь
CURLOPT_NOBODY, установленный в TRUE, делает запрос HTTP HEAD по сравнению с «обычным» HTTP GET.
Если вы получаете другой код ответа, из-за этого просто потому, что сервер решает ответить по-другому – хотя он не должен соответствовать спецификации HTTP.