2016-11-13 62 views
0

我有一個php REST客戶端,它調用本地tomcat REST服務器,並且在生產服務器上最近幾年一直使用它。未設置PHP cURL選項

我不得不做一些不相關的客戶端CSS更改,並不得不建立我的開發環境來測試,他們沒有推動之前推動。由於我已安裝的vagrant版本發生了一些變化,我不得不改變它使用的流浪箱,我認爲這是造成所有問題的原因。

它出現時,我做了一個cURL請求奇怪的事情發生,它不正確創建請求。

這是我的客戶端代碼(這是目前正在製作):

class RestClient { 

    private $baseEndpoint; 
    private $username; 
    private $password; 
    private $siteCode; 

    function __construct($baseEndpoint, $username, $password, $siteCode) { 
     $this -> baseEndpoint = $baseEndpoint; 
     $this -> username = $username; 
     $this -> password = $password; 
     $this -> siteCode = $siteCode; 
    } 

    public function get($endpoint) { 
     //die($this -> baseEndpoint . $endpoint); //comment1 
     $curlResource = curl_init($this -> baseEndpoint . $endpoint); 
     curl_setopt_array($curlResource, array(
      CURLOPT_RETURNTRANSFER => true, 
      CURLOPT_FOLLOWLOCATION => true, 
      CURLOPT_HTTPHEADER => array(     
       "Accept:application/json", 
       "Content-Type:application/json", 
       "Site-Code:" . $this -> siteCode, 
      ), 
      CURLOPT_USERPWD => $this -> username . ":" . $this -> password 
     ));   

     $curlResponse = curl_exec($curlResource); 
     // echo curl_error($curlResource); //comment2 
     $resultStatus = curl_getinfo($curlResource); 
     // print_r($resultStatus); die(); //comment3 

     $statusCode = $resultStatus['http_code']; 

     if($statusCode != 200) { 
      throw new Exception("500"); 
     } 

     $restResponse = new Response(); 
     $restResponse -> setStatus($statusCode); 
     $restResponse -> setEntity($curlResponse); 

     return $restResponse; 
    } 
  • 如果我取消註釋1我得到了我期待的 - 「http://localhost:8080/webApp/endpoint
  • 如果我取消註釋2我得到「無法連接到:: 1:權限被拒絕「,根本沒有顯示出來......我在Google上搜索了這個錯誤,他們都顯示出請求端點。
  • 如果我取消註釋comment3,我會得到「Array([url] =>http://localhost:8080/webApp/endpoint [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result ] => 0 [redirect_count] => 0 [total_time] => 0 [namelookup_time] => 0.000515 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] = > 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => 127.0.0.1 [certinfo] => Array())「,它似乎沒有顯示我的選項正在設置。

薩姆指出:

  • 當我運行卷曲請求(捲曲--user用戶名:密碼--header 「網站代碼:倫敦」 http://localhost:8080/webApp/endpoint)我得到正確的響應。
  • 在開發環境php版本是5.6.27,產量是5.6.26。
  • OS版本都CentOS版本6.8
  • PHP捲曲的信息如下:

cURL support enabled cURL Information 7.19.7 Age 3 Features AsynchDNS No CharConv No Debug No GSS-Negotiate Yes IDN Yes IPv6 Yes krb4 No Largefile Yes libz Yes NTLM Yes SPNEGO No SSL Yes SSPI No Protocols tftp, ftp, telnet, dict, ldap, ldaps, http, file, https, ftps, scp, sftp Host x86_64-redhat-linux-gnu SSL Version NSS/3.21 Basic ECC ZLib Version 1.2.3 libSSH Version libssh2/1.4.2

+0

@AniketSahrawat複製和粘貼失敗時,做一些sanitisation。我會更新。 –

+0

http_code = 0聞起來像某種配置停止發送curl請求。 你在使用SELinux嗎?看到這裏的第一個評論http://php.net/manual/en/function.socket-connect.php –

回答