2014-03-25 91 views
1

我知道關於這個特定主題有幾十個問題,但通常的建議似乎沒有幫助。我已經在根帳戶和我正在使用的特定帳戶下檢查了服務器,並且在兩種情況下(如果它們甚至可以不同),SSL被列爲功能並且HTTPS被列爲協議。cURL - 在libcurl中不支持或禁用協議https(PHP後更新)

我的cURL函數工作正常,直到昨天我們將PHP從〜5.1/5.2升級到5.4.26。我的假設是PHP和/或cURL是在沒有SSL支持的情況下編譯的,但似乎並非如此。

如果有幫助,這些函數會調用Appcelerator的雲服務。這是登錄功能之一,率先拋出了「試圖獲得非對象的屬性」的錯誤,因爲$res是假的:

function login() { 
    $url = 'https://api.cloud.appcelerator.com/v1/users/login.json?key=<MY_APP_KEY>'; 
    $options = array(
     CURLOPT_RETURNTRANSFER => TRUE, 
     CURLOPT_POST => TRUE, 
     CURLOPT_POSTFIELDS => array(
      'login' => '<MY_APP_LOGIN>', 
      'password' => '<MY_APP_PASSWORD>' 
     ) 
    ); 
    $curl_session = curl_init($url); 
    curl_setopt_array($curl_session, $options); 
    $res = curl_exec($curl_session); 
    curl_close($curl_session); 
    $this->session_id = json_decode($res)->meta->session_id; 
} 

是否有可能,即使SSL和HTTPS列出他們」實際上沒有效?有沒有辦法檢查,如果有必要修復?

+0

儘量設置'CURLOPT_SSL_VERIFYPEER' /'CURLOPT_SSL_VERIFYHOST'選項'FALSE' – hindmost

+0

@hindmost沒有變化。 – Bobe

+0

你說「SSL被列爲一項功能,HTTPS被列爲協議。」,但你是如何做到的?對我來說,聽起來像你檢查了一些不同於導致你的代碼失敗的東西。 –

回答

2

一個可能的問題是,您的計算機中安裝了多個libcurl版本,因此,作爲根檢查返回有關全局安裝的信息,而您的PHP環境運行的版本不同。

在你的PHP程序,你可以改爲運行curl_version(),看看它說什麼關於SSL支持和版本等

+0

嗯,這很奇怪。即使我在此特定帳戶上檢查了curl配置,運行curl_version()將ssl_version顯示爲NULL,將ssl_version_number顯示爲0,並且協議陣列中自然缺少https。那麼我將如何去啓用SSL?我必須完全重新配置Apache嗎? – Bobe

+0

不,它是PHP使用的需要使用SSL支持構建的libcurl版本。你可能應該試着確保你使用單一且唯一的libcurl安裝,並使用SSL ... –

+0

是的,看起來我們將不得不重建Apache。謝謝。 – Bobe

相關問題