| 投稿者 | 
			投稿 | 
		
		
			| 
				
			 | 
			
				
				#1 2010 年 8 月 5 日(木) 15:52  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2010 
				返信数: 9 
				
			 | 
			
				 PHP5にて既に稼働しているSSL Apache Webサイトに、SOAPで外部サーバーへの接続を試みていますがエラーの原因が不明で、困っています。
  new SoapClientは上手くいっている?ようなのですが、 実際に関数を呼び出すとエラーになってしまいます。
  Fatal error: Uncaught SoapFault exception: [HTTP] SSL support not available in this build in /var/www/html/test.php:35 
  new SoapClientのあとに、関数を実行しているのが35行目です。
  SOAPサーバーはWin2008 IIS7で自己証明書がインストールされています。 PHP5が動いているWEBサーバーは、phpinfo()でSoap Client enabled となっており、 問題ないように思います。 プログラムの記述方法が間違っているのか、もしくは サーバーの設定が間違っているのでしょうか。 
			 | 
		
		
			| 
				
			 | 
			
				
				#2 2010 年 8 月 5 日(木) 16:32  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2009 
				返信数: 103 
				
			 | 
			
				 こんにちは。
  SSL support not availableといっているので Soapだけでなくsslも有効かどうか確認してみては? 
			 | 
		
		
			| 
				
			 | 
			
				
				#3 2010 年 8 月 5 日(木) 18:25  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2010 
				返信数: 9 
				
			 | 
			
				 返信ありがとうございます。 既に、サーバー証明書(自己証明書)でhttpsで動いているサイトです。 phpinfo()でopensslなど、関連するところはenabledとなっているので、検討がつきません。 SOAP固有で確認する設定がありますでしょうか。 
			 | 
		
		
			| 
				
			 | 
			
				
				#4 2010 年 8 月 6 日(金) 12:10  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2009 
				返信数: 103 
				
			 | 
			
				こんにちは。 こちらの環境ではhttpsでも動くようです。 soap_client.php <?php $location = ' https://example.net/soap_server.php'; $uri = ' https://example.net/'; $client = new SoapClient(null, array('location' => $location, 'uri' => $uri, 'trace' => 1)); $result = $client->showDate('date'); echo $result; ?> soap_server.php <?php function showDate($str) { 	$result = $str . "=" . date("Y-m-d"); 	return $result; } $server = new SoapServer(null, array('uri' => "https://example.net/")); $server->addFunction('showDate'); $server->handle(); ?> http://www.phppro.jp/qa/2834マルチポストのうえに環境もろくに書かれてない質問に回答を要求するのは無理があるんじゃない? 
			 | 
		
		
			| 
				
			 | 
			
				
				#5 2010 年 8 月 9 日(月) 15:03  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2010 
				返信数: 9 
				
			 | 
			
				 SSL support not available in this build がどうしても消えません。 SSL通信はできているはずなのですが、他にどこを確認したらいいでしょうか。 
			 | 
		
		
			| 
				
			 | 
			
				
				#6 2010 年 8 月 9 日(月) 15:13  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2009 
				返信数: 103 
				
			 | 
			
				 こんにちは。
  提示したサンプルソースも動作しないということでしょうか? もしそうならサーバ、クライアント両方の環境をお知らせください。 
			 | 
		
		
			| 
				
			 | 
			
				
				#7 2010 年 8 月 9 日(月) 15:23  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2010 
				返信数: 9 
				
			 | 
			
				 サーバー側については、パッケージのため、関連関数の一覧を情報としてもらっています。 サーバー上で、WEBサービスが動いていることは確認済みです。 クライアントですが、newをした後に、関数を実行するところでSSL support not available in this build エラーになります。 環境は、以下の通り
  Miracle Linux v4.0 Apache/2.0.52 PHP 5.0.5 (ただし、zend.ze1_compatibility_mode=Onとなっています)
  よろしくお願いします。 
			 | 
		
		
			| 
				
			 | 
			
				
				#8 2010 年 8 月 9 日(月) 16:13  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2010 
				返信数: 9 
				
			 | 
			
				 追記です。 error_logにApache起動の際のnoticeが出ていました。関係あるのでしょうか。 [notice] LDAP: Built with OpenLDAP LDAP SDK [notice] LDAP: SSL support unavailable 
			 | 
		
		
			| 
				
			 | 
			
				
				#9 2010 年 8 月 9 日(月) 16:49  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2009 
				返信数: 103 
				
			 | 
			
				 こちらの環境は下記の通りです。
  サーバ側 CentOS5.5 apache-2.2.3 php-5.2.13 CGI-mode remi版 cli mysql pdo mcrypt pgsql gd soap common mbstring
 
 
  クライアント側 windows vista sp1 apache-2.2.14 php-5.2.11 CGI-mode
  extension=php_gd2.dll extension=php_mbstring.dll extension=php_mcrypt.dll extension=php_mysql.dll extension=php_mysqli.dll extension=php_openssl.dll extension=php_pdo.dll extension=php_pdo_mysql.dll extension=php_pdo_pgsql.dll extension=php_pdo_sqlite.dll extension=php_pgsql.dll extension=php_soap.dll extension=php_sockets.dll
 
  サーバとクライアントはopensslとsoapどちらも有効です。
 
 
  soapの前にクライアントで file_get_contents("https://example.net/example.txt"); が正常に実行できるかどうかの確認が先のようですね。
 
  > サーバー側については、パッケージのため サーバでphpinfo()できないのでしょうか?
  あと、error_logに関してはどちら(サーバ、クライアント)ですか。 
			 | 
		
		
			| 
				
			 | 
			
				
				#10 2010 年 8 月 9 日(月) 17:04  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2010 
				返信数: 9 
				
			 | 
			
				 >サーバでphpinfo()できないのでしょうか? サーバーへは、Win2008へSQLServerを用意して、あとはインストーラを実行し、IISを設定したのみです。 よって、プログラムがなにでできているかは不明ですが、PHPではなく、.NETで動いているようです。(.asmxへのアクセスのため)
  error_logですが、クライアントのものとなります。(サーバー側のものはみれませんので)
 
  >soapの前にクライアントで >file_get_contents("https://example.net/example.txt"); >が正常に実行できるかどうかの確認が先のようですね。 サーバーのHome URLを実行すると、IISのページが表示されますので、そのURLで試しました。
  $buf = file_get_contents("https://test.fc.co.jp/"); echo $buf;
  以下のメッセージが出ました。 Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in /var/www/html/test.php on line 75
  Warning: file_get_contents(https://test.fc.co.jp/) [function.file-get-contents]: failed to open stream: no suitable wrapper could be found
  因果関係がよくわかっておりません。 なにとぞよろしくお願いします。 
			 | 
		
		
			| 
				
			 | 
			
				
				#11 2010 年 8 月 9 日(月) 17:37  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2010 
				返信数: 9 
				
			 | 
			
				 追記です。 基本的なことですが、opensslとsoapが有効なことをクライアントで確認するには、phpinfo()で OpenSSL support  enabled   OpenSSL Version  OpenSSL 0.9.7a Feb 19 2003   となっていて、soapも Soap Client  enabled   Soap Server  enabled   となっていれば、有効になっているということで問題ないでしょうか。 
			 | 
		
		
			| 
				
			 | 
			
				
				#12 2010 年 8 月 9 日(月) 18:17  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2010 
				返信数: 9 
				
			 | 
			
				 サーバー側のIISの設定で、Windows認証を有効→無効にし、匿名認証を無効→有効にし、かつ SSL設定のSSLが必要のチェックをはずし、IIS再起動することで、動作することを確認しました。
  Windows認証については、new SoapClientの引数にloginとpasswordを指定していましたが、だめだったようです。 SSLと認証については、対応必須なのですが、何かわかることありましたらよろしくお願いします。 
			 | 
		
		
			| 
				
			 | 
			
				
				#13 2010 年 8 月 9 日(月) 18:37  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2009 
				返信数: 103 
				
			 | 
			
				 > $buf = file_get_contents("https://test.fc.co.jp/"); > echo $buf;
  ファイルを指定しないと読めませんよ。 読めたらクライアント側のphpに関するsslはOKですね。
 
 
  > PHP5にて既に稼働しているSSL Apache Webサイトに php5で稼動してたんじゃなかったの?
  soapサーバーがphpでなく.netという情報出すの遅すぎますよ。 こういう重要な情報は最初の書き込みに書くものです。 提示したサーバ側のソースまったく意味ないし。(検証できなかったということだよね)
  ところで.netのsoapサーバは正常に動作していると100%言えるのでしょうか?
 
 
  と書いたところで掲示板更新されてますね。 > 基本的なことですが、opensslとsoapが有効なことをクライアントで確認するには 有効で問題ないと思います。
  > IIS再起動することで、動作することを確認しました。 何の動作を確認したのやら…。
  > Windows認証については、new SoapClientの引数にloginとpasswordを指定していましたが、だめだったようです。 SoapClientに指定できるのはWindows認証ではなくhttp認証だと思いますが私はWindows認証に関しては素人です。 ここから先はphpとwindowsに博識な人でないと無理なようです。
  # 最初から省略事項が多すぎて私はもう限界。疲れた…。 
			 | 
		
		
			| 
				
			 | 
			
				
				#14 2010 年 8 月 9 日(月) 19:00  
			 | 
		
		
			| 
				会員
				
				 登録者: 8 2010 
				返信数: 9 
				
			 | 
			
				 > > $buf = file_get_contents("https://test.fc.co.jp/"); > > echo $buf; > ファイルを指定しないと読めませんよ。 > 読めたらクライアント側のphpに関するsslはOKですね。 sslのアクセスはいまだできていないので、認証の件確認してから試してみます。
  > > PHP5にて既に稼働しているSSL Apache Webサイトに > php5で稼動してたんじゃなかったの? SOAPクライアントがPHP5のSSL Apache Webサーバーとなっています。 SOAPサーバーは今回新規構築のWindows2008 .NET(たぶん)となります。
  > ところで.netのsoapサーバは正常に動作していると100%言えるのでしょうか? パッケージの業者に確認し、SOAPサーバー上で付属の管理用アプリケーションから実行して値が取得できているので、 サーバーでは動いているという確認を取っています。
  > > IIS再起動することで、動作することを確認しました。 > 何の動作を確認したのやら…。 SOAPサーバーへ接続、関数を実行し、SOAPサーバーから値を取得できたことで、「動作」としています。
  > SoapClientに指定できるのはWindows認証ではなくhttp認証だと思いますが私は > Windows認証に関しては素人です。 > ここから先はphpとwindowsに博識な人でないと無理なようです。 ありがとうございました。ヒントをたくさんいただきとても助かりました。 サーバー側の設定が重要であることがわからず、WEBサービスが動いていると 業者に確認をとっていたこともあり、Windows側を考えなかったのがよくありませんでした。 
			 |