Php SoapClient无法加载SoapUI没有问题的WSDL

Php SoapClient无法加载SoapUI没有问题的WSDL,php,soap-client,ssh-tunnel,Php,Soap Client,Ssh Tunnel,在我的办公室,我可以直接连接到相关的soap服务器,我的代码可以正常工作。 但是,出于安全考虑,不允许来自家庭的VPN连接访问SOAP服务器。所以我不得不求助于在跳转站上使用SSH隧道 因为WSDL文件包含绝对URL,所以我不能使用位置来更改它,它不会加载WSDL。因此,我决定向主机文件添加条目,将服务器名称映射到127.0.0.1,并将SSH隧道映射到转发正确端口的jumpstation 这允许我使用原始的WSDL而无需修改。我在办公室的时候只需要把主持人的条目注释掉 通过SoapUI,一切正

在我的办公室,我可以直接连接到相关的soap服务器,我的代码可以正常工作。 但是,出于安全考虑,不允许来自家庭的VPN连接访问SOAP服务器。所以我不得不求助于在跳转站上使用SSH隧道

因为WSDL文件包含绝对URL,所以我不能使用位置来更改它,它不会加载WSDL。因此,我决定向主机文件添加条目,将服务器名称映射到127.0.0.1,并将SSH隧道映射到转发正确端口的jumpstation

这允许我使用原始的WSDL而无需修改。我在办公室的时候只需要把主持人的条目注释掉

通过SoapUI,一切正常。我可以加载WSDL,它完全解析它,它包含很多内容——大型企业soap服务,我可以启动得到正确响应的soap请求

但是,如果我通过在本地主机上针对apache运行的php SoapClient执行相同操作,则会引发异常: SOAP-ERROR:分析架构:无法从导入架构'http://wsdl.service.addres:port/wsdlUri?SCHEMA%2Fsoa.osb.model%2Fsrc%...' 我已经替换了服务器和请求的其余部分,因为它们不相关

如果我获取整个URL并将其粘贴到浏览器中,它将生成WSDL-XML

加载并创建SoapClient的PHP代码如下所示:

$options =
[
   'trace' => 1,
   'exception' => 1,
];
$wsdl = '/path/to/local/wsdlfile.xml';
$client = new \SoapClient($wsdl, $options);
有人知道去哪里找吗?我想不出还有什么可以尝试的了。
我确信我的PHP设置正确,因为代码在办公室已经运行了几个月,这里没有任何更改。PHP是否以不同的方式进行DNS解析,并以某种方式为该公司服务器获取另一个或没有IP?

如果将此URL粘贴到浏览器中,您确定不会被重定向吗?那么可能是从http到https?因为如果你被自动重定向,你必须使用最终的URL,因为SoapClient只是接收302永久移动的头,例如,这不是有效的WSDL文件。如果是,但不是,它也不能直接从办公室工作。它是同一个WSDL文件。是否已经比较了您在CL中执行的跟踪路由和通过PHP执行的跟踪路由?它们是一样的吗?traceroute没有说太多,因为WSDL文件中提到的主机名被重新路由到localhost,但我已经在PHP和CLI中确认了这一点。除非您连接到特定的隧道端口,否则您永远不会离开服务器?