2011-05-18 77 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

相關問題