CURL Ошибка 401 - Причиной проблемы является версия PHP? - PullRequest
0 голосов
/ 18 мая 2011

У меня есть следующий код:

$body = "<SOAP-ENV:Envelope>".$data."</SOAP-ENV:Envelope>";
$ch = curl_init($FD_Add);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "WS******._.1:********");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSLCERT, DIR_ROOT."ABCDEFG/Certs/WS******._.1.pem");
curl_setopt($ch, CURLOPT_SSLKEY, DIR_ROOT."ABCDEFG/Certs/WS******._.1.key");
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, "ckp_***********");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
if($test_env){echo 'The result of your request is:<RESULT>'.$result.'</RESULT>br/>' ;}
curl_close($ch);

Ответ - ошибка 401 HTTP требует аутентификации.Я подтвердил правильность идентификатора пользователя и пароля.Сначала мне интересно, может ли версия PHP вызвать эту ошибку, если она не поддерживает CULROPT_AUTH, поскольку я использую PHP ~ v.3.4, который из того, что я прочитал, не поддерживает эту опцию.

Кто-нибудь знает, может ли это быть проблемой?

1 Ответ

3 голосов
/ 18 мая 2011

Вероятно, вы могли бы подделать его, выполнив базовый заголовок auth самостоятельно:

$auth_header = "Authorization: Basic " . base64_encode("$user:$pass");
curl_setopt($ch, CURLOPT_HTTP_HEADER, $auth_header);

но это доступно только с Curl 7.10.3 и новее. Ваш PHP каменного века, скорее всего, использует CURL такого же каменного века.

Действительно ... PHP 3.4 - это эквивалент езды на машине, купленной у Флинстоунов. Вы должны перейти на что-то более современное, например Model-T ... эти конные экипажи впечатляют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...