2013-10-05 60 views
0

這讓我瘋狂了2天 - 我有2個PHP函數,下面詳細介紹都使用curl。他們指向完全相同的「XML網關」,唯一的區別是嘗試通過SSL執行,而另一個通過未加密的HTTP執行。PHP CURL SSL連接到XML網關

HTTP連接符操作符完全按照預期工作,發佈XML文件並返回服務器響應。

SSL連接器返回過於模糊的'發生內部服務器錯誤。請稍後再試'。我的lighttpd錯誤日誌中沒有顯示任何內容,有沒有人有任何明智的想法?

我在想,如果這是我的網絡服務器配置/ openSSL配置。它們都是Debian Wheezy標準軟件包。我很欣賞SSL_VERIFYPEER &被設置爲銷售的主機是不安全的,但我一直在試圖耗盡選項。

openssl s_client -connect xmlgw.companieshouse.gov.uk:443 -ssl3 

和命令行功能

curl https://xmlgw.companieshouse.gov.uk/v1-0/xmlgw/Gateway 

也工作在Web服務器上如預期。

PHP函數:

//SSL post function 

public function getSSLCurlResponse($xml) { 
    $url = "https://xmlgw.companieshouse.gov.uk/v1-0/xmlgw/Gateway"; 

    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_SSLVERSION,3); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 

    $response = curl_exec($ch); 
    curl_close($ch); 
    return $response; 
} 

//HTTP non SSL function 
public function getCurlResponse($xml) { 
    $url = "http://xmlgw.companieshouse.gov.uk/v1-0/xmlgw/Gateway"; 

    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

    $response = curl_exec($ch); 
    curl_close($ch); 
    return $response; 
} 

任何幫助將非常感激!

感謝

回答

-1

我已得出結論,這是在與服務器的整個連接錯誤 - 儘管我無法找到證明的任何方式。我設法找到了一個不使用SSL套接字的替代解決方案。

+0

請用您的解決方案更新帖子並接受。 –