\'SOAP-ERROR: WSDL 구문 분석: [URL]에서 로드할 수 없습니다. 외부 엔터티 [URL]을 로드하지 못했습니다.\' 메시지와 함께 PHP SOAP 연결이 실패하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-02 21:56:03
원래의
684명이 탐색했습니다.

Why does my PHP SOAP connection fail with

SOAP PHP 오류 구문 분석 WSDL: 외부 엔터티 로드 실패

PHP를 사용하여 SOAP 연결을 설정하려고 하면 오류가 발생할 수 있습니다. "SOAP-ERROR: WSDL 구문 분석: [URL]에서 로드할 수 없습니다: 외부 엔터티 [URL]을 로드하지 못했습니다." 이 오류는 SOAP 클라이언트가 클라이언트 생성자에서 참조된 WSDL 파일에 액세스할 수 없음을 나타냅니다.

문제 해결 단계:

  1. WSDL을 확인하세요. 파일을 사용할 수 있고 액세스할 수 있는지 확인하세요. 클라이언트 생성자 URL에 지정된 WSDL 파일이 지정된 경로에 있고 SOAP 클라이언트에서 액세스할 수 있는지 확인하세요.
  2. SSL 확인 비활성화(보안 문제): PHP 5.6.5 이상을 사용하고 SOAP 1.2 연결을 설정하는 경우 클라이언트 생성자에 SSL 매개변수를 추가하면 문제가 해결될 수 있습니다.
<code class="php">$opts = array(
    'ssl' => array(
        'ciphers' => 'RC4-SHA',
        'verify_peer' => false,
        'verify_peer_name' => false
    )
);

$params = array(
    'encoding' => 'UTF-8',
    'verifypeer' => false,
    'verifyhost' => false,
    'soap_version' => SOAP_1_2,
    'trace' => 1,
    'exceptions' => 1,
    'connection_timeout' => 180,
    'stream_context' => stream_context_create($opts)
);

$wsdlUrl = $url . '?WSDL';
$oSoapClient = new SoapClient($wsdlUrl, $params);</code>
로그인 후 복사

참고: SSL 확인을 비활성화하는 것은 보안 위험이 있으므로 프로덕션 환경에서 사용해서는 안 됩니다.

  1. WSDL 파일 형식 확인: WSDL 파일이 다음을 준수하는 유효한 XML 문서인지 확인하세요. WSDL 사양.
  2. 네트워크 연결 확인: SOAP 클라이언트가 WSDL 파일을 호스팅하는 서버에 대한 네트워크 액세스 권한을 가지고 있는지 확인하세요.
  3. WSDL 파일 캐싱 사용을 고려하세요. : PHP에서 WSDL 파일 캐싱을 활성화하면 반복 다운로드를 방지하고 성능을 향상할 수 있습니다.
<code class="php">ini_set("soap.wsdl_cache_enabled", "1");
ini_set("soap.wsdl_cache_ttl", "86400"); // 24 hours</code>
로그인 후 복사

위 내용은 \'SOAP-ERROR: WSDL 구문 분석: [URL]에서 로드할 수 없습니다. 외부 엔터티 [URL]을 로드하지 못했습니다.\' 메시지와 함께 PHP SOAP 연결이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿