gpt4 book ai didi

PHP SoapClient : SoapFault exception Could not connect to host

转载 作者:IT王子 更新时间:2023-10-29 00:02:59 27 4
gpt4 key购买 nike

使用此代码我发出 soap 请求

$client = new SoapClient('http://example.com/soap/wsdl');

try {
$result = $client->myMethod();
} catch (Exception $e) {
echo $e->getMessage();
}

有时(十分之一)会引发异常:

SoapFault exception: [HTTP] Could not connect to host

我的尝试

1) 我寻找解决方案,然后 I read这个问题可能是由 wsdl 缓存引起的,我在 php.ini 中禁用了它:

soap.wsdl_cache_enabled = 0
soap.wsdl_cache_ttl = 0

引发更少的异常

2) 我试图在 windows/system32/drivers/etc/hosts 中添加到 windows 主机(它们在 windows 上)的 dns 分辨率:

160.XX.XXX.XX example.com

引发更少的异常

3) 我还尝试禁用“Windows 防火墙”,

引发更少的异常

4) 我还尝试增加 php.ini 中的 default_socket_timeout

default_socket_timeout = 90

一切都没有改变

问题

服务器 soap 似乎没有问题。它也可以从其他站点使用,没有问题。还有什么我可以做的吗?

我的设置

PHP 5.6

Apache 2.4

Windows Server 2012

更新

经过多次测试,我认为问题出在网络上,soap服务器在反向代理后面,问题出现在代理上。

最佳答案

我只是想在此基础上再添加一个可能有用的提示。除了已经写在此处的其他有用答案之外,您还应该检查一下。

如果您从 php 5.5 或更早版本升级到 PHP 5.6 或 PHP7+,您可能会看到此错误。较新版本的 PHP 中 soap 的默认设置是验证远程对等点(应该如此)。如果您从 HTTPS 中提取 WSDL 或具有 HTTPS 端点,那么它将检查 CA。如果失败,您将收到此特定错误。

有两种方法可以解决这个问题。

1) 最安全的选择是验证对等点。在 ubuntu 系统上,您可以将证书复制到 /usr/local/share/ca-certificates/ 并以 root 身份运行 update-ca-certificates

2) 或者您可以在此处禁用验证,这是一个如何执行此操作的示例。 - 这通常不是首选选项,但如果问题很紧急,它可以提供快速修复。不过请不要马虎对待您的安全。

$soapClient = new SoapClient($wsdl_url, array(
//'trace' => 1,
'stream_context' => stream_context_create(array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true //can fiddle with this one.
)
))
));

我发现有关 SOAP 的 PHP 文档有点零散。尤其是 SOAP WSSE。

关于PHP SoapClient : SoapFault exception Could not connect to host,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30410658/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com