不久之前我注意到我的应用程序发出了一些Soap错误,我开始调查它们。像:
SoapClient::SoapClient(http://###.###.###.###:8080/path/to/some.wsdl): failed to open stream: HTTP request failed!
SoapClient::SoapClient(): I/O warning : failed to load external entity "http://###.###.###.###:8080/path/to/some.wsdl"
SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://###.###.###.###:8080/path/to/some.wsdl' : failed to load external entity "http://###.###.###.###:8080/path/to/some.wsdl"
它看起来像是远程服务器上的超时(WSDL缓存已关闭)。在弹出该服务器并且没有运气之后,我试着只是file_get-contents()
WSDL来看看会发生什么......
没有骰子:大约20秒左右后,我得到了相同的流错误:
file_get_contents(http://###.###.###.###:8080/path/to/some.wsdl) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: HTTP request failed!
在最后的努力中,我尝试通过curl_*
函数阅读内容,事实上我确实得到了我正在寻找的内容。
SoapClient
和file_get_contents
的代码,所以切换到所有卷曲解决方案并不是一个真正的选择。allow_url_fopen
已启用。有什么想法吗?
答案 0 :(得分:0)
allow_url_fopen
需要在On
的PHP设置中file_get_contents
才能使用网址。否则它会给你那个确切的错误。通过加载phpinfo();
调用页面来仔细检查您的PHP设置,以确保它们不会被其他php.ini或.htaccess文件覆盖。
我猜测防火墙问题,但你说curl可以在PHP内部工作,这将以相同的方式打开套接字。