ネットワークに 3 つのボックスがあります
Box#1 - Apache と php を備えた RHEL ボックス (基本的には LAMP ボックス)
Box#2 - Apache 軸 2 を使用して WSDL をホストする JBoss を備えた Windows ボックス
Box#3 - 別の Windows ボックス (基本的には XAMPP ボックス -- 詳細については、 3 番目のボックスは後で)
ブラウザーで SoapClient オブジェクトを使用して box#2 の WSDL にアクセスする PHP スクリプトを box#1 で実行しようとすると、次のように返されます。
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://XXX.XXX.XXX.XXX:8080/axis2/services/TheService?wsdl': failed to load external実在物
次に、戻ってきた wsdl ファイルの file_get_contents を単純化するために、box#2 を試しました。
警告: file_get_contents(http://XXX.XXX.XXX.XXX:8080/axis2/services/TheService?wsdl): ストリームを開けませんでした: 4 行目の /application/test.php で許可が拒否されました
でも!Apacheを実行している同じユーザーとしてログインすると、telnet(コマンドライン)経由で最後のスクリプト(file_get_contents)を実行すると、WSDLのコンテンツが返されます...(!)
--
同じコードをWindowsボックス(ボックス#3)で実行しようとしましたが、PHP.ini設定がボックス#2と非常に似ているように見えますが、可能な限り同一ではなく、wsdlを使用してコンテンツを取得できました問題なく WSDL ファイルの
--
私は(stackoverflowとgoogle)を検索し、他の人が同じ問題を抱えているのを見て、次のような解決策を試しました:
- PHP.ini の max_file_size が 128M に設定されています (wsdl よりも大きい)
- allow_url_fopen がオンに設定されている
ボックス#1で機能するかどうかを確認するために、cURLを使用してファイルの内容を取得しようとしましたが、何も返されませんでした。
誰かが私に洞察を与えることができれば、それは大歓迎です。PHP.ini に設定がないか、かなりマイナーな設定があると確信しています。