Здравствуйте,
В настоящее время я пишу клиент для доступа к серверу Microsoft Exchange и чтения контактов, встреч и т.д. с него.
В результате многодневных поисков я смог подключиться к EWS через Soap-клиент PHP и пользовательскую обертку HTTPS Stream. Этот сайт очень помог мне на этом этапе.
Все прекрасно работало на моей машине Windows 7 с использованием XAMPP
Теперь я загрузил свой проект на машину для разработки Debian 6.0 Squeeze, которая имеет точно такую же конфигурацию, как и моя машина Windows в отношении веб-сервера, настроек php, настроек mysql и др. но он больше не работает
Машина debian может разрешить и пинговать сервер exchange без проблем
Я нашел проблему в том, что cURL не может получить WSDL файл EWS
Он всегда получает пустой ответ и код состояния 401 (Unauthorized)
Учетные данные я использую правильные, те же самые учетные данные работают на моей машине windows
Я извлек неисправный кусок кода и попробовал запустить его отдельно, это выглядит так:
echo "Trying to get https://".$cfg[ 'Exchange.Server' ]."/EWS/Services.wsdl
";
$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 '';
$response = curl_exec( $curl );
$info = curl_getinfo( $curl );
var_dump( $info );
var_dump( $response );
curl_close( $curl );
В результате я получаю упомянутый код состояния 401 и пустой ответ. Когда я вызываю тот же url в браузере или с тем же кодом на моей машине windows, я получаю нужный мне WSDL файл
На самом деле я даже не могу сказать, является ли это проблемой на базе linux или я делаю что-то неправильно в какой-то момент, я борюсь с этим уже 2 дня.
Есть ли кто-то, кто может найти мою ошибку или сказать мне причину, почему это не работает?
Я могу предоставить любую другую необходимую информацию по запросу