2017-03-15 82 views
2

我目前正在開發一個項目,在同一臺服務器上對我的API進行ajax調用。一切都很不錯,精細,直到幾個小時前,當捲曲突然停止工作沒有任何理由和它給了我下面的錯誤PHP cURL突然無法正常工作

Protocol https not supported or disabled in libcurl 

但它沒有任何意義,因爲它較早,唯一的工作我改變的事情是在登錄屏幕(僅PHP)的東西,並與

dpkg-reconfigure tzdata 
[php.ini] date.timezone = "Europe/Berlin"; 

我已經重新啓動的Apache2從默認爲「歐洲/柏林」服務器上的時區,重新啓動服務器,檢查PHP .ini文件和我的phpinfo,都沒有任何錯誤或變化,但捲曲只是無效。我試圖捲曲其他主機& localhost,但沒有任何工作。我也檢查了/ var/mail/root,沒有任何錯誤。

的信息很少到我的服務器

  • Debian的8
  • SSL證書由賽門鐵克
  • 全根訪問沒有任何限制

這是我使用

捲曲碼
$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $this->url); 

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    curl_setopt($ch, CURLOPT_POST, count($params)); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params); 

    session_write_close(); 
    $result = curl_exec($ch); 
    curl_close($ch); 
    session_start(); 

就像我說的那樣,它運行良好,沒有任何問題超過1個月。這是我見過的最奇怪的事情。我希望有人能幫助我。 如果沒有,是否有任何好的捲曲替代品? (POST-Requests)

在此先感謝!

+0

可能的重複http://stackoverflow.com/questions/9595820/protocol-https-not-supported-or-disabled-in-libcurl – k0pernikus

+1

特別是。看看http://stackoverflow.com/a/28220576/457268也許你的網址的構建方式發生了變化。 – k0pernikus

+0

'在libcurl中不支持或禁用協議https,這意味着'libcurl'安裝時沒有'https'支持。請參閱這篇文章http://stackoverflow.com/questions/19015282/how-do-i-enable-https-support-in-libcurl – Ahmad

回答

2

感謝大家的幫助,但我發現了錯誤。 問題如下:

curl沒有與https協議一起工作,因爲庫文件夾中存在斷開的鏈接/文件。如果捲曲是不是爲你工作,請與curl --version如果您收到以下錯誤:

curl: /usr/local/lib/libcurl.so.4: no version information available (required by curl) 

如果是,就轉到/usr/local/lib和刪除這兩個libcurl鏈接/文件。這解決了我的問題。之後,重新啓動apache2,它應該再次工作。

請注意,這隻解決了我的問題,它不是一個全球性的解決問題。所以要注意你在服務器上刪除了什麼。始終做好備份!

0

一件事是什麼可以做的一個問題是

curl_setopt($ch, CURLOPT_POST, count($params));

嘗試定義是這樣的:

curl_setopt($ch, CURLOPT_POST, true);

這是一個設置什麼對我的作品很大:

$default = array(
      CURLOPT_POSTFIELDS  => http_build_query($data), 
      CURLOPT_POST   => true, 
      CURLOPT_RETURNTRANSFER => true, 
      CURLOPT_CONNECTTIMEOUT => 10, 
      CURLOPT_TIMEOUT   => 10, 
      CURLOPT_SSL_VERIFYPEER => false, 
      CURLOPT_HTTPHEADER  => array('Accept: application/json') 
     ); 

     $ch = curl_init($url); 
      curl_setopt_array($ch, $options); 
      $output=curl_exec($ch);  
     curl_close($ch); 

但請注意這一點:01本例中的設置爲接受JSON。

另外http_build_query可以修復您的發佈數據中的一些解析問題。使用並不重要,但可以提供幫助。

+0

不幸的是,這也不起作用。它仍然返回給我'POST APIHandle.php 500(內部服務器錯誤)' – iMostLiked

+0

您在通過CURL訪問的文件中存在問題,而不是在CURL內部。查看error.log –

+1

要跟蹤爲什麼'curl_setopt($ ch,CURLOPT_POST,count($ params))'可能成爲問題,那麼該選項指的是布爾型字段,而不是數字型字段。 –