L'accès Échange de Services Web avec PHP et cURL

Bonjour,

Je suis actuellement à la rédaction d'un client pour accéder à un serveur Microsoft Exchange et de lire les contacts, les rendez-vous etc. .

Par des jours de recherche j'ai été en mesure de se connecter à l'EWS via PHP Soap client et personnalisé HTTPS gestionnaire de Flux. Cette site m'a beaucoup aidé à ce point.

Tout a bien fonctionné sur mon ordinateur Windows 7 en utilisant XAMPP

Maintenant j'ai téléchargé mon projet Debian 6.0 Squeeze machine de développement qui a exactement la même configuration que ma machine Windows qui concerne le web-serveur, les paramètres de php, mysql. mais il juste ne travail plus

La machine debian peut résoudre et la commande ping sur le serveur exchange sans problèmes

J'ai cloué le réel problème à un point, où cURL n'est pas en mesure de récupérer le fichier WSDL de l'EWS

Il reçoit toujours une réponse vide et un 401 (non autorisé) code d'état

- Je utiliser les informations d'identification sont correctes, les mêmes informations d'identification de travailler sur ma machine windows

J'ai extrait le mauvais morceau de code et essayé de courir, il stand-alone, il ressemble à ceci:

    echo "Trying to get https://".$cfg[ 'Exchange.Server' ]."/EWS/Services.wsdl<br>";
    $curl = curl_init( 'https://'.$cfg[ 'Exchange.Server' ].'/EWS/Services.wsdl' );
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER,     true );
    curl_setopt( $curl, CURLOPT_HTTP_VERSION,       CURL_HTTP_VERSION_1_1 );
    curl_setopt( $curl, CURLOPT_HTTPAUTH,           CURLAUTH_NTLM );
    curl_setopt( $curl, CURLOPT_USERPWD,            $cfg[ 'Exchange.User' ].':'.$cfg[ 'Exchange.Password' ] );
    curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER,     false );
    curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST,     false );

    echo '<pre>';
    $response = curl_exec( $curl );
    $info = curl_getinfo( $curl );

    var_dump( $info );
    var_dump( $response );

    curl_close( $curl );

Le résultat je reçois ici est mentionné 401 code d'état, et une réponse vide
Lorsque j'appelle la même url dans mon navigateur ou avec le même code sur ma machine windows, j'obtiens le fichier WSDL je veux

En fait je ne peux même pas dire si c'est une base linux problème ou si je fais quelque chose de mal à un certain point, j'ai du mal avec ce pour 2 jours maintenant.

Il y a quelqu'un qui peut être en mesure de trouver mon erreur ou me dire pourquoi ça ne fonctionne pas?

Je peut fournir toute autre information nécessaire à la demande

Avez-vous essayé d'obtenir le fichier sur la ligne de commande, ainsi, par exemple, avec la curl ligne de commande de l'outil? Il peut révéler un grand nombre d'informations.
Oui, j'ai essayé la même chose en utilisant l'outil de ligne de commande "curl" à l'aide des paramètres -k (ignorer non valide cert), --ntlm (NTLM auth) et -u pour mes informations d'identification d'utilisateur, j'ai reçu une réponse vide
Activer la sortie, je pense que c'est -v, de contre-vérifier les --help. Il y a quelques autres "débogage" options pour les certs etc. IIRC.
Semble être quelque chose avec le NTLM bibliothèque sur votre client....
Je n'utilise pas l'authentification NTLM bibliothèque dans ce cas, le roulage est intégré authentification NTLM -v m'a indiqué une erreur que j'ai faite, qui a été à l'aide de \\ au lieu de \ comme mon domaine séparateur pour le nom d'utilisateur, si, j'obtiens toujours la réponse 401

OriginalL'auteur DarkDevine | 2011-10-05