2017-04-24 43 views
0

直到幾天前,一切進展順利,但現在,Curl已停止爲使用HTTPS的地址工作。
這是代碼:PHP CURL突然停止在https請求上工作

$url = 'https://android.googleapis.com/gcm/send'; 
     $fields = array(
     'registration_ids' => array($registation_ids), 
     'data'    => array("message" => $message, 
             "title" => $title, 
             "params" => $params, 
             "code" =>$code), 
    ); 

    $headers = array(
     'Authorization: key=' . GOOGLE_API_KEY, 
     'Content-Type: application/json' 
    ); 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 

    $result = curl_exec($ch); 

此代碼已經超過一年的平穩運行。但現在它返回:

代理錯誤

代理服務器收到來自上游服務器的無效響應。 代理服務器無法處理請求GET /app/test_notifications。

原因:錯誤從遠程服務器

的Apache/2.2.15(紅帽)服務器讀數app-servername.rhcloud.com端口80

但是,如果在前面的代碼我刪除s from https:// ...像這樣http://android.googleapis.com/gcm/send請求發送沒有問題,但我不能允許修改,因爲我還需要訪問其他需要SSL的地址。

我也與其他https地址進行測試,但它是同樣的結果

在互聯網上搜索,我發現解決更新捲曲,但我不知道這是我的解決方案,自代碼上週正確執行https請求。反正我離開這裏的curl --version響應我的服務器上:

curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps scp sftp 
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz 

有沒有一種方法來測試,實際上是一個捲曲的問題?這將幫助我知道如何找到解決方案。

回答

0

回顧這個問題並比較我在Openshift中的不同應用,我意識到https地址中的curl在其中一個工作。我使用phpinfo()檢查了差異,發現與提供服務器的內容相反,在提出問題的應用程序中,SSL版本是3.18.1而不是3.27.1。

解決方案:在openshift中重新啓動應用程序,如果不起作用,手動更新捲曲。 (重新啓動我的工作)

0

我認爲這是谷歌升級而不是Curl問題。

Firebase雲消息傳遞(FCM)是GCM的新版本。它繼承了可靠和可擴展的GCM基礎架構,以及新功能!查看常見問題以瞭解更多信息。如果您要將消息集成到新應用程序中,請從FCM開始。強烈建議GCM用戶升級到FCM,以便從現在和未來的新FCM功能中受益。 GCM連接服務器參考 HTTP協議 XMPP協議 的Android API參考 iOS的API參考 鉻API參考 內容 下游消息語法 下游HTTP消息(JSON) 通知有效載荷支持 下游HTTP消息(明文) 口譯下游消息響應 下行消息錯誤響應代碼

檢查https://developers.google.com/cloud-messaging/http-server-ref

+0

我也認爲,但如果我嘗試訪問這樣的貝寶 $ ch = curl_init(https://www.paypal.com/home);也阻止它 – Sebastian

+0

有沒有辦法來測試,實際上,是一個捲曲問題? – Sebastian