2009-08-29 4 views
1

J'essaie d'accéder à une page Web sécurisée sur l'un de nos serveurs. La page Web se trouve dans un répertoire protégé .htaccess qui nécessite un nom d'utilisateur et un mot de passe. J'essaie d'obtenir libcurl pour soumettre la demande d'authentification afin qu'elle puisse accéder au fichier. Après avoir trouvé des conseils dans divers endroits, j'ai trouvé ce que je crois devoir fonctionner, mais ce n'est pas le cas.Besoin d'aide pour l'authentification par nom d'utilisateur/mot de passe libcurl

$url="https://www.myurl.com/htaccess_secured_directory/file.php"; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, 'myusername:mypassword'); 
$result = curl_exec($ch); 
echo $result; 

Le fichier file.php devrait simplement faire écho à "Hello World!", Mais la variable $ result est vide. Existe-t-il un moyen de récupérer les messages d'erreur à partir de curl? Est-ce que je fais quelque chose de mal? J'ai également utilisé CURLLAUTH_ALL sans succès, mais je crois que j'ai juste l'autorisation de base de toute façon.

Répondre

2

Utilisez curl_errno() et curl_error() pour récupérer des informations d'erreur, à savoir:

$url="https://www.myurl.com/htaccess_secured_directory/file.php"; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, 'myusername:mypassword'); 
$result = curl_exec($ch); 

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

curl_close($ch); 

Les codes d'erreur sont documentés here.

+3

Merci! Cela m'a aidé à trouver que Curl n'a pas aimé le certificat SSL sur le serveur distant pour une raison quelconque. J'ai ajouté les options suivantes pour résoudre le problème: curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt ($ ch, CURLOPT_SSL_VERIFYHOST, false); – user77413

Questions connexes