Je ne comprends pas quand j'écho $ httpCode J'ai toujours 0, je m'attendais à 404 quand je change $ html_brand en une URL cassée. Y at-il quelque chose qui me manque ou que je ne connais pas? Merci.
//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);
Si vous vous connectez au serveur, vous pouvez obtenir un code retour, sinon il échouera et vous obtiendrez un 0. Si vous essayez de vous connecter à "www.google.com/lksdfk", vous obtiendrez un code retour de 400, si vous allez directement sur google.com, vous obtiendrez 302 (puis 200 si vous transférez à la page suivante ... eh bien je le fais parce que cela transfère à google.com.br, de sorte que vous pourriez ne pas l'obtenir), et si vous allez sur "googlecom" vous obtiendrez un 0 (hôte introuvable), donc avec le dernier, il n'y a personne pour renvoyer un code.
Testé en utilisant le code ci-dessous.
<?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);
Essayez ceci après curl_exec pour voir quel est le problème:
print curl_error($ch);
Si vous imprimez quelque chose comme "malformé", vérifiez votre format d'URL.
vérifiez le curl_error après le curl_getinfo pour trouver les erreurs cachées.
if(curl_errno($ch)){
echo 'Curl error: ' . curl_error($ch);
}
J'ai eu le même problème et dans mon cas c'était parce que la fonction curl_exec est désactivée dans php.ini. Vérifiez les journaux:
PHP Warning: curl_exec() has been disabled for security reasons in /var/www/***/html/test.php on line 18
Supprimez curl_exec des fonctions désactivées dans le fichier php.ini sur le fichier de configuration du serveur.
Quel est le contenu exact que vous passez dans $ html_brand?
Si sa syntaxe d'URL est incorrecte, vous obtiendrez très probablement le code HTTP 0.
Comme dit ici et ci-dessous, une requête ayant échoué (, c’est-à-dire que le serveur n’a pas été trouvé ) renvoie false, pas de code d’état HTTP, depuis une réponse n'a jamais été reçu.
Appelez curl_error()
.