2016-05-05 8 views
1

In Wamp-Server (lokal) funktioniert mein Code, aber in meinem Web-Server auf Centos 6 das Skript funktioniert nicht. Warum? Ich habe viele Antworten gelesen, aber keine Lösung gefunden.SOAP-FEHLER: Parsing WSDL: Konnte Laden von 'Website' nicht laden externe Einheit

konnte nicht geladen werden von 'https://example.com/WEBService/SearchService.svc/wsdl?wsdl': failed externe Einheit laden "https://example.com/WEBService/SearchService.svc/wsdl?wsdl"

private $_wsdl_uri = 'https://example.com/WEBService/SearchService.svc/wsdl?wsdl'; 
private static $_soap_client = false;              
private static $_inited = false;               


public function init(&$errors) 
{ 
    if(!self::$_inited) 
    { 
    try 
    { 
     if (self::$_soap_client = @new SoapClient($this->_wsdl_uri, array('soap_version' => SOAP_1_1))) 
      self::$_inited = true; 
    } 
    catch (Exception $e) 
    { 
     $errors[] = 'Error here '.$e->getMessage(); 
     return false; 
    } 
    } 
    return self::$_inited; 
} 

php -m | grep -i Seife

Seife

openssl installiert.

+0

Können Sie den Hostnamen von der gleichen Stelle aus anpingen, an der Sie die Skripts ausführen? Kannst du das wsdl in deinem Browser laden? Können Sie die wsdl mit wget von der Kommandozeile aus laden? Ist libxml installiert? –

+0

1. Ja kann ich. 2. Mein centos ist ohne GUI, also gibt es keinen Browser. 3. Es funktioniert nur mit dem Schlüssel "--no-check-certificate '". 4. Ja ist es. –

Antwort

2

In meinem Webserver ist PHP 5.6 installiert. Im Wamp-Server (lokal) php 5.3.

I deaktiviert SSL-Zertifizierung, durch den Kontext Strom vorbei:

"stream_context" => stream_context_create(
    array(
     'ssl' => array(
      'verify_peer'  => false, 
      'verify_peer_name' => false, 
     ) 
    ) 
) 

So funktioniert es.

private $_wsdl_uri = 'https://example.com/WEBService/SearchService.svc/wsdl?wsdl'; 
private static $_soap_client = false;              
private static $_inited = false;               


public function init(&$errors) 
{ 
    if(!self::$_inited) 
    { 
    try 
     { 
      if (self::$_soap_client = @new SoapClient($this->_wsdl_uri, array('soap_version' => SOAP_1_1, "stream_context" => stream_context_create(
      array(
       'ssl' => array(
        'verify_peer'  => false, 
        'verify_peer_name' => false, 
       ) 
      ) 
     ) 
     ) 
     )) 
       self::$_inited = true; 
     } 
    catch (Exception $e) 
    { 
     $errors[] = 'Error here '.$e->getMessage(); 
     return false; 
    } 
    } 
    return self::$_inited; 
} 
Verwandte Themen