SOAP 解析エラー: 外部エンティティのロードに失敗しました
PHP を使用した SOAP Web サービス統合のコンテキストで、「SOAP」というエラー メッセージが表示されます。 -エラー: WSDL の解析: 'http://localhost/MyRegistration/login.xml' からロードできませんでした...外部エンティティ "http://localhost/MyRegistration/login.xml" のロードに失敗しました" は、次の問題を示しています。指定された WSDL ファイルにアクセスまたは解析しています。
根本原因:
通常、このエラーは次のいずれかの理由で発生します:
トラブルシューティング:
1. WSDL URL を確認します:
SOAPClient コンストラクターで指定された URL (ここでは「http://127.0.0.1/MyRegistration/login.wsdl」) が WSDL ファイルの正しい場所を指していることを確認します。あるいは、ファイルへの完全修飾パスを使用してみてください。
2.外部エンティティの読み込み制限を無効にする:
デフォルトでは、PHP はセキュリティ上の理由から外部エンティティへのアクセスを制限する場合があります。この制限を無効にするには、PHP 構成 (php.ini) に次の行を追加します:
allow_url_fopen = On
3. WSDL の有効性の確認:
WSDL ファイル (login.wsdl) の内容を検証して、それが整形式の XML であり、有効な SOAP コントラクトに必要な要素と属性が含まれていることを確認します。オンライン XML バリデータを使用するか、ファイルを手動で確認します。
4.その他の考慮事項:
セキュリティへの影響に関する注意:
外部エンティティの読み込み制限により、セキュリティ上の脆弱性が発生する可能性があります。問題のトラブルシューティングを行った後にこれを有効にするか、それに応じて代替のセキュリティ対策を実装することをお勧めします。
以上がPHP で「SOAP-ERROR: Parsing WSDL: Couldn'tload from ...」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。