Здравствуйте,
В настоящее время я пишу клиент для доступа к серверу Microsoft Exchange и чтения из него контактов, встреч и т.д.
Через дни поиска я смог подключиться к EWS через клиент PHP Soap и собственную обертку HTTPS Stream. Этот сайт очень помог мне на этом этапе.
Все работало отлично на моей машине Windows 7 с помощью XAMPP
Теперь я загрузил свой проект на машину разработки Debian 6.0 Squeeze, которая имеет точно такую же конфигурацию, что и моя компьютер с Windows, относительно настроек веб-сервера, php, настроек mysql и т.д., но это просто больше не работает
Машина debian может без проблем разрешать и пинговать сервер обмена
Я прикрепил фактическую проблему до точки, где cURL не может получить WSDL файл EWS
Он всегда получает пустой ответ и код состояния 401 (неавторизованный)
Учетные данные, которые я использую, верны, одни и те же учетные данные работают на моей машине Windows
Я извлек неисправный кусок кода и попытался запустить его автономно, он выглядит так:
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 );
В результате я получаю упомянутый код состояния 401 и пустой ответ Когда я вызываю тот же url в моем браузере или с тем же кодом на моей машине Windows, я получаю файл WSDL, который я хочу
На самом деле я даже не могу сказать, является ли это проблемой на основе Linux или если я что-то делаю неправильно в какой-то момент, я боюсь с этим в течение 2 дней.
Есть ли кто-то, кто может найти мою ошибку или сказать мне причину, почему она не работает?
Я могу предоставить любую дополнительную необходимую информацию по запросу