2016-11-13 6 views
0

Ich habe einen PHP REST Client, der einen lokalen Tomcat REST Server aufruft und diesen seit ein paar Jahren auf einem Produktionsserver verwendet.PHP cURL Optionen werden nicht gesetzt

Ich musste einige nicht verwandte clientseitige CSS-Änderungen vornehmen und musste meine Entwicklungsumgebung erstellen, um zu testen, ob sie in Ordnung sind, bevor sie zu prod gehen. Aufgrund einiger Änderungen mit der Version von Vagrant, die ich installiert habe, musste ich die Vagrant-Box ändern, die es verwendet, und ich denke, das ist, was alle Probleme verursacht.

Es erscheint, wenn ich eine cURL Anfrage etwas seltsame geschieht und es die Anfrage nicht korrekt erstellt.

Das ist mein Client-Code (die auf die Produktion arbeitet derzeit):

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; 
    } 
  • Wenn ich comment1 Kommentar- ich bekommen, was ich erwarte - "http://localhost:8080/webApp/endpoint"
  • Wenn ich comment2 Kommentar- erhalte ich " Fehler beim Herstellen der Verbindung zu :: 1: Berechtigung verweigert ", die überhaupt nicht richtig angezeigt wird ... Wo ich diesen Fehler gegoogelt habe, scheinen alle den Anforderungsendpunkt anzuzeigen.
  • Wenn ich comment3 auskommentiere, bekomme ich "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_zeit] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => 127.0.0.1 [certinfo] => Array()) ", die anscheinend keine meiner Optionen anzeigt.

Somes Hinweise:

  • Wenn ich die Locke Anfrage laufen (curl --user Benutzer: Passwort --header "site-Code: london" http://localhost:8080/webApp/endpoint) ich die richtige Antwort.
  • Auf der Entwicklungsumgebung php Version ist 5.6.27, Produktion ist 5.6.26.
  • OS-Versionen sind beide CentOS 6.8
  • php Release cURL info ist wie folgt:

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 Kopieren und Einfügen schlägt fehl, wenn eine Desinfektion durchgeführt wird. Ich werde aktualisieren. –

+0

http_code = 0 riecht nach einer Art Konfiguration, die das Senden der Curl-Anforderung stoppt. Verwenden Sie SELinux? Siehe den ersten Kommentar hier http://php.net/manual/en/function.socket-connect.php –

Antwort