PHP CURL HTTP CODE return 0

Я не понимаю, когда я эхо $ httpCode, я всегда получаю 0, я ожидал 404, когда меняю $ html_brand на сломанный URL. Есть ли что-то, о чем я скучаю или не знаю? Благодарю.

//check if url exist $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $html_brand); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($httpCode == 404) { echo "The Web Page Cannot Be Found"; return; } curl_close($ch); 

Related of "PHP CURL HTTP CODE return 0"

Если вы подключитесь к серверу, вы можете получить от него код возврата, иначе он будет терпеть неудачу, и вы получите 0. Поэтому, если вы попытаетесь подключиться к «www.google.com/lksdfk», вы получите код возврата 400, если вы перейдете непосредственно на google.com, вы получите 302 (а затем 200, если вы перейдете на следующую страницу … ну, я делаю это, потому что он переадресуется на google.com.br, так что вы не можете этого понять) и если вы перейдете на «googlecom», вы получите 0 (хост не найден), поэтому с последним, некому отправить код обратно.

Протестировано с использованием приведенного ниже кода.

 <?php $html_brand = "www.google.com"; $ch = curl_init(); $options = array( CURLOPT_URL => $html_brand, CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_ENCODING => "", CURLOPT_AUTOREFERER => true, CURLOPT_CONNECTTIMEOUT => 120, CURLOPT_TIMEOUT => 120, CURLOPT_MAXREDIRS => 10, ); curl_setopt_array( $ch, $options ); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ( $httpCode != 200 ){ echo "Return code is {$httpCode} \n" .curl_error($ch); } else { echo "<pre>".htmlspecialchars($response)."</pre>"; } curl_close($ch); 

Попробуйте это после curl_exec, чтобы узнать, в чем проблема:

 print curl_error($ch); 

Если он печатает что-то вроде «неправильного», проверьте его URL-адрес.

Какое точное содержимое вы передаете в $ html_brand?

Если он имеет неверный синтаксис URL, вы, скорее всего, получите код HTTP 0.

Как сказано здесь и ниже, неудачный запрос ( т. Е. Сервер не найден ) возвращает false, код состояния HTTP не сохраняется, поскольку ответ так и не был получен.

Вызов curl_error() .

проверьте curl_error после curl_getinfo, чтобы узнать скрытые ошибки.

 if(curl_errno($ch)){ echo 'Curl error: ' . curl_error($ch); } 

У меня была такая же проблема, и в моем случае это было связано с тем, что функция curl_exec отключена в php.ini. Проверка журналов:

 PHP Warning: curl_exec() has been disabled for security reasons in /var/www/***/html/test.php on line 18 

Решение – удалить curl_exec из отключенных функций в php.ini в файле конфигурации сервера.