我正在使用 SOAP 网络服务进行增值税有效性检查。它在我的工作站和测试服务器上运行良好,但在生产服务器上运行良好。它在那里抛出一个异常:
$ php -a
Interactive shell
php > $client = new \SoapClient('http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl', array('exceptions' => true));
PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl' : failed to load external entity "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"
in php shell code on line 1
PHP Warning: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl' : failed to load external entity "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"
in php shell code:1
Stack trace:
#0 php shell code(1): SoapClient->SoapClient('http://ec.europ...', Array)
#1 {main}
thrown in php shell code on line 1
所有 3 台机器都运行相同的操作系统 (Ubuntu 12.04) 和 PHP (5.3.10) 版本。软件包 php-soap (0.12.0-2) 都安装在它们上面。我可以从生产服务器获取 wsdl 文件。这个问题已经持续了好几天了,所以它不是暂时的。
如果我下载 wsdl 并使用本地文件路径而不是远程 http 路径,它也可以在生产服务器上运行。然而,这不是一个好的解决方案。
知道我还能检查什么吗?