PHP CURL ne renvoie rien
function ParseUrl($URL)
{
$crl = curl_init();
curl_setopt ($crl, CURLOPT_URL, $URL);
curl_setopt ($crl, CURLOPT_PORT, 8086);
curl_setopt ($crl, CURLOPT_USERPWD, "admin:pass");
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, 5);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}
echo ParseUrl('http://xxx.me/serverinfo');
Le code ci-dessus ne renvoie simplement rien. La page que j'essaie d'obtenir avec curl utilise l'authentification http.
Est-ce que je manque quelque chose de simple ou quoi?
1 réponses
Commencez par faire ceci et voyez ce que vous obtenez, et après cela, il serait assez évident Quel est le problème:
Vérifiez s'il y a eu une erreur avec la requête après curl_exec:
if(curl_errno($ch)){
echo 'Curl error: ' . curl_error($ch);
}
Cela vous fournira suffisamment d'informations pour savoir s'il y a eu une erreur avec la demande. S'il n'y a pas eu d'erreur, vous pouvez vérifier la requête envoyée après curl_exec afin de vérifier que tout ce qui est envoyé est en place:
print_r(curl_getinfo($ch));
Edit: après les commentaires, c'est ce que vous cherchez pour ce qui manque:
, Vous devez définir l'option CURLOPT_HTTPAUTH
.
Citation de php.net sur le sujet:
La ou les méthodes D'authentification HTTP pour utiliser. Les options sont: CURLAUTH_BASIC, CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE, CURLAUTH_NTLM, CURLAUTH_ANY, et CURLAUTH_ANYSAFE.
L'opérateur bit à bit | (ou) peut être permet de combiner plus d'une méthode. Si cela est fait, cURL interrogera le serveur pour voir quelles méthodes il prend en charge et de prendre la meilleure.
CURLAUTH_ANY est un alias pour CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.
CURLAUTH_ANYSAFE est un alias pour CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM.