【发布时间】:2020-03-07 06:29:24
【问题描述】:
这与homestead、vagrant 和laravel无关。
我有一个应用服务在 Windows Azure 服务器上的PHP 7.3 上运行。
这是我正在运行的与cURL 通话相关的代码:
$resCurl = curl_init();
$url_API = 'https://example.com/api/someMethod';
curl_setopt( $resCurl, CURLOPT_HTTPHEADER, array( 'Content-type: APPLICATION/JSON; CHARSET=UTF-8' ) );
curl_setopt( $resCurl, CURLOPT_POSTFIELDS, $jsonRequest );
curl_setopt( $resCurl, CURLOPT_POST, true );
curl_setopt( $resCurl, CURLOPT_URL, $url_API );
curl_setopt( $resCurl, CURLOPT_RETURNTRANSFER, 1);
$resultAPI = curl_exec( $resCurl );
执行此操作时,我继续生成此错误:
Curl 错误:OpenSSL SSL_read: SSL_ERROR_SYSCALL,errno 10054
运行命令提示符,我可以执行php -i 来查看openssl 是否有正在读取的目录以及提到的文件:
我已经检查了目录并从这里下载了最新的cacert.pem 文件:https://curl.haxx.se/docs/sslcerts.html
我不想通过将 CURLOPT_SSL_VERIFYHOST 和 CURLOPT_SSL_VERIFYPEER 设置为 false 来关闭 SSL 验证来解决此问题。
有什么建议吗?
更新:
我对@987654335@ 和CURLOPT_SSLCERTTYPE 的选项进行了硬编码:
curl_setopt( $resCurl, CURLOPT_SSLCERT, 'D:\home\site\cert\cacert.pem');
curl_setopt( $resCurl, CURLOPT_SSLCERTTYPE, 'PEM' );
现在错误不同了:
无法设置私钥文件:'D:\home\site\cert\cacert.pem' 类型 PEM
我会上传一个私钥,但是这个公共 cacert 没有私钥。
【问题讨论】:
-
错误
10054表示“对等方重置连接”,表明客户端和服务器之间存在某种连接问题。可能被防火墙或路由问题中断。 -
@Drew010 你说得对,这是防火墙问题,发布答案,如果 Jack Jia 不先解决,我会接受