日本PHPユーザ会 掲示板

日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。

日本PHPユーザ会 掲示板 » PHP 5 » SOAP のエラーについて

SOAP のエラーについて

ページ: 1

投稿者 投稿
会員
登録者: 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 となっており、
問題ないように思います。
プログラムの記述方法が間違っているのか、もしくは
サーバーの設定が間違っているのでしょうか。
会員
登録者: 8 2009
返信数: 103
こんにちは。

SSL support not availableといっているので
Soapだけでなくsslも有効かどうか確認してみては?
会員
登録者: 8 2010
返信数: 9
返信ありがとうございます。
既に、サーバー証明書(自己証明書)でhttpsで動いているサイトです。
phpinfo()でopensslなど、関連するところはenabledとなっているので、検討がつきません。
SOAP固有で確認する設定がありますでしょうか。
会員
登録者: 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
マルチポストのうえに環境もろくに書かれてない質問に回答を要求するのは無理があるんじゃない?
会員
登録者: 8 2010
返信数: 9
SSL support not available in this build がどうしても消えません。
SSL通信はできているはずなのですが、他にどこを確認したらいいでしょうか。
会員
登録者: 8 2009
返信数: 103
こんにちは。

提示したサンプルソースも動作しないということでしょうか?
もしそうならサーバ、クライアント両方の環境をお知らせください。
会員
登録者: 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
返信数: 9
追記です。
error_logにApache起動の際のnoticeが出ていました。関係あるのでしょうか。
[notice] LDAP: Built with OpenLDAP LDAP SDK
[notice] LDAP: SSL support unavailable
会員
登録者: 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に関してはどちら(サーバ、クライアント)ですか。
会員
登録者: 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

因果関係がよくわかっておりません。
なにとぞよろしくお願いします。
会員
登録者: 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
となっていれば、有効になっているということで問題ないでしょうか。
会員
登録者: 8 2010
返信数: 9
サーバー側のIISの設定で、Windows認証を有効→無効にし、匿名認証を無効→有効にし、かつ
SSL設定のSSLが必要のチェックをはずし、IIS再起動することで、動作することを確認しました。

Windows認証については、new SoapClientの引数にloginとpasswordを指定していましたが、だめだったようです。
SSLと認証については、対応必須なのですが、何かわかることありましたらよろしくお願いします。
会員
登録者: 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に博識な人でないと無理なようです。

# 最初から省略事項が多すぎて私はもう限界。疲れた…。
会員
登録者: 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側を考えなかったのがよくありませんでした。

ページ: 1

日本PHPユーザ会 掲示板 » PHP 5 » SOAP のエラーについて

日本PHPユーザ会 掲示板 は UseBB 1 フォーラムソフトウェア を使用しています