프로덕션 서버 (원격 서버)에서 PHP로 구현 된 Soap Server에 문제가 있습니다.PHP SoapServer : URL에 "? wsdl"이 포함 된 XML (WSDL 파일) - XML 파일 없음 -
WSDL 모드에서만 함수가있는 간단한 Soap 서버 (기본 PHP 클래스)를 구현했습니다.
이제ini_set("soap.wsdl_cache_enabled", "0");
$server = new SoapServer("wsSeguimiento.wsdl");
$server->addFunction("ResultadoDetalleExtendido");
$server->handle();
, 여러분이 알다시피, 당신이 좋아하는 URL로 웹 브라우저를 통해 서버를 호출 할 때 "HTTP : //localhost/soapserver/wsServer.php"
그래서 내 코드처럼 보이는 당신은 빈 페이지가 있습니다 - 제 경우에는 - 또는 당신이 프로그래밍 한 프로그램 (서버 코드)이 있습니다.
"http : //localhost/soapserver/wsServer.php? wsdl"끝에 "? wsdl"과 동일한 URL을 호출하면 서버 (처리 함수)는 XML wsdl을 on으로 해석합니다. 웹 브라우저를 사용하면 text/xml 콘텐츠 유형을 얻을 수 있으며 XML 정의 자체를 볼 수 있습니다.
이제 내 개발 환경에서 작동합니다. 아무 문제 없습니다. 저는 제 자신의 서버를 테스트하기 위해 Soap 클라이언트를 만들었습니다. 그리고 그것이 빠른 응답을 반환하는지 확인하기 위해 모든 것이 잘 동작합니다. 그러나 코드를 프로덕션 서버에 업로드하면 작동하지 않습니다.
Firefox는 "? wsdl"호출과 함께 "XML 형식이 잘못되었습니다"라는 일반적인 오류가있는 URL에 표시되지만이 경우 XML 파일이 전혀없는 것처럼 시작 부분부터 나타납니다. 그리고 내 클라이언트를 사용하는 경우, 나는 오류 얻을 :
이SOAP-ERROR : WSDL 구문 분석 : '? : //.../SOAP_SERVER/seguimientoServer.php WSDL HTTP'에서로드 할 수 없습니다 시작 태그를 '<'을 찾을 수 없습니다.
WSDL XML 파일의 네임 스페이스와 URL을 올바르게 변경했습니다. 그래서 제대로 작동해야합니다. 그러나 그렇지 않습니다.
내가 ... 청크 데이터, 내용 길이, X가 구동 -에 의해, 무엇을 기준으로, HTTP 헤더 자체와 관련된 기존의 버그가 있음을 발견했습니다
하지만이 솔루션을 볼 수 없습니다 .
나는 (핸들() 호출 후)이 기반으로 내 서버에 약간 해킹을 수행했습니다
if(isset($_REQUEST['wsdl']))
{
ob_clean();
echo file_get_contents("wsSeguimiento.wsdl");
}
그리고 이와
, 그것은 정말 작품! 그러나 이것이 이것을 해결할 수있는 방법 일 필요는 없다고 확신합니다 ...
아니요 ... 그렇지 않습니다. 내 개발 Apache 환경에서 완벽하게 작동합니다. 하지만 그것은 생산 아파치에서 작동하지 않습니다 그리고 XML의 시작에 아무것도 변경했습니다 ... : ( – Lightworker