2011-05-18 125 views
0

我有以下代码:CURL错误401 - PHP版本是否会导致此问题?

$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的版本在运行PHP〜v时不支持CULROPT_AUTH,可能会导致此错误。 3.4从我读的内容不支持这个选项。

有人知道这可能是麻烦吗?

+0

我想如果我能够建立一个时间机器我不会问这个问题。 PHP从未更新过。 – 2011-05-18 17:37:27

+0

你可以仔细检查PHP版本号吗?我不认为PHP3超越v3.0.18,这已经接近10年前了!哦,如果是你使用PHP 4.3的情况,请升级,4.3.0是9岁! – 2011-05-18 17:46:06

+0

如果你使用PHP 3.x,那么你的安装是非常不安全的。 – ceejayoz 2011-05-18 18:00:34

回答

3

你也许可以伪造它自己发出基本认证头:

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

,但这只是因为卷曲7.10.3及更高版本。您的石器时代的PHP很可能使用同样石器时代的CURL。

真的...... PHP 3.4相当于在从摩登石头购买的汽车中驾驶。你应该升级到更现代的东西,比如Model-T ......这些无马车非常令人印象深刻。

+0

谢谢。很高兴我不是唯一一个。 – 2011-05-18 17:46:16

+0

至少你回答了这个问题。此外,该服务器不是我的,我没有访问它来升级,我只是为其他人组建一个网站,并且从来没有与我自己的旧版本的PHP一起工作。 – 2011-05-18 17:46:58

相关问题