2016-05-05 6 views
1

Wampサーバー(ローカル)でコードが機能しますが、CentOS 6のWebサーバーでスクリプトが機能しません。どうして?私は答えの多くを読んだが、解決策を見つけられなかった。SOAP-ERROR:WSDLの解析:「Webサイト」からロードできませんでした。外部エンティティのロードに失敗しました

は 'https://example.com/WEBService/SearchService.svc/wsdl?wsdl' からロードできませんでした:外部エンティティをロードするために失敗しました "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 soap

soap

opensslがインストールされています。

+0

スクリプトを実行するのと同じ場所からホスト名をpingできますか?あなたのブラウザでwsdlを読み込めますか? Wgetをコマンドラインから使用してwsdlをロードできますか? libxmlはインストールされていますか? –

+0

1.はいできます。 2.私のcentosはGUIがないので、ブラウザはありません。 3.キー "--no-check-certificate"でのみ動作します。はい、そうです。 –

答えて

2

私のウェブサーバでは、php 5.6がインストールされています。 Wampサーバー(ローカル)でPHP 5.3。

Iコンテキスト・ストリームを渡すことで無効になっSSL証明書、:

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

だから、それは動作します。

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; 
} 
関連する問題