ホームページ >バックエンド開発 >PHPチュートリアル >SOAP PHP クライアントが外部 WSDL ファイルをロードできないのはなぜですか?

SOAP PHP クライアントが外部 WSDL ファイルをロードできないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-03 06:14:02559ブラウズ

Why Can't My SOAP PHP Client Load the External WSDL File?

WSDL の SOAP PHP エラー解析: 外部エンティティのロードに失敗しました

問題: Web サービスを実行しようとしたときPHP と SOAP を使用すると、エラーが発生します。「SOAP-ERROR: WSDL の解析: 'http://localhost/MyRegistration/login.xml' から読み込めませんでした: 外部エンティティ "http://localhost/MyRegistration" の読み込みに失敗しました」 /login.xml"".

回答:

このエラー メッセージは、SOAP クライアントが指定された URL から外部 WSDL ファイルをロードできないことを示します。これはいくつかの理由で発生する可能性があります。

  • URL が正しくありません: SoapClient コンストラクターで指定された URL (http://127.0.0.1/MyRegistration/login.wsdl) が次のとおりであることを確認してください。
  • セキュリティ制限: デフォルトでは、セキュリティ上の懸念により、PHP は外部エンティティのロードを許可しません。この制限を無効にするには、次の行を PHP スクリプトに追加します。

    <code class="php">libxml_disable_entity_loader(false);</code>

注: セキュリティ制限を無効にする場合は、注意して行う必要があります。アプリケーションに潜在的な脆弱性が存在します。

  • 内部エンティティ: エラー メッセージは、外部エンティティをロードできないことを具体的に示しています。これは、WSDL ファイル内に問題の原因となっている内部エンティティ参照がある可能性があることを示唆しています。 WSDL ファイルに他の XML エンティティへの参照がないか確認してください。
  • WSDL 名前空間: WSDL ファイルで指定された名前空間が、PHP SoapClient コンストラクター (例: urn) で使用される名前空間と一致していることを確認してください。 :LoginVal).

追加の考慮事項:

  • SOAP サーバーが指定された URL とポート (つまり http:/) で実行されていることを確認してください。 /localhost/MyRegistration/register.php).
  • login.wsdl ファイルの権限をチェックして、Web サーバーが読み取り可能であることを確認してください。
  • まだ問題が発生する場合は、組み込みのsoap_client_call関数を使用して、指定されたURLからWSDLを手動で取得することを検討してください。

以上がSOAP PHP クライアントが外部 WSDL ファイルをロードできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。