Curl DNS 仅在本地 WordPress 中失败(错误 6)——相同的 URL 在 WordPress 之外的相同环境中工作

问题描述 投票:0回答:1

我的所有开发站点的 WordPress 核心、插件和主题更新开始失败,并出现相同的错误 6(无法解析主机)。我可以在 WordPress 之外的同一环境中的相同 URL 上使用 CLI Curl 和 PHP 中的 Curl,不会出现任何错误。

我希望有任何想法或线索。

Curl、httpd、PHP、MariaDB 等是使用 Homebrew 安装的。

我已经尝试过了

  • 重新安装 Curl 和 httpd
  • 我尝试过使用 PHP 8.2、8.1、7.4
  • 全新 WordPress 安装和许多现有安装
  • 使用 mu 插件并在 WordPress 中编辑 php 包含文件来尝试更改curl选项

...并得到相同的错误结果。

我不知道如何查看在调用curl_exec()时或调用curl_exec()后不久设置了哪些CURLOPTS。我怀疑 WordPress 设置了一个选项,并想在 WordPress 之外的 php 脚本中重新创建它。

mu 插件更改 WordPress 中的 curl 选项的示例

<?php
add_action( 'http_api_curl', function( $curl_handle ) {
   curl_setopt( $curl_handle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
});

关于我的环境

  • macOS Sonoma 14.2.1(现在,但这是从 Ventura 开始的)
  • M1 最大
  • WordPress 6.4.2(但至少 6.3 和 5.9.8 也存在同样的问题)
> which curl
curl: aliased to /opt/homebrew/opt/curl/bin/curl
> curl -V
curl 8.5.0 (aarch64-apple-darwin23.0.0) libcurl/8.5.0 (SecureTransport) OpenSSL/3.2.0 zlib/1.2.12 brotli/1.1.0 zstd/1.5.5 libidn2/2.3.4 libssh2/1.11.0 nghttp2/1.58.0 librtmp/2.3 OpenLDAP/2.6.6
Release-Date: 2023-12-06
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz MultiSSL NTLM SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd
> php -i | grep "SSL Version"
SSL Version => (SecureTransport) OpenSSL/3.2.0

PHP 版本 8.1.27

卷曲
cURL 支持 已启用
cURL 信息 8.5.0
年龄 10
特点
异步DNS 是的
字符转换 没有
调试 没有
GSS-谈判 没有
国际化域名 是的
IPv6 是的
krb4 没有
大文件 是的
libz 是的
NTLM 是的
NTLMWB 没有
SPNEGO 是的
SSL 是的
SSPI 没有
TLS-SRP 是的
HTTP2 是的
GSSAPI 是的
KERBEROS5 是的
UNIX_SOCKETS 是的
PSL 没有
HTTPS_PROXY 是的
多SSL 是的
布罗特利 是的
协议 dict、文件、ftp、ftps、gopher、gophers、http、https、imap、imaps、ldap、ldaps、mqtt、pop3、pop3s、rtmp、rtmpe、rtmps、rtmpt、rtmpte、rtmpts、rtsp、scp、sftp、smb , smbs, smtp, smtps, telnet, tftp
主持人 aarch64-apple-darwin23.0.0
SSL版本 (安全传输)OpenSSL/3.2.0
ZLib版本 1.2.12
libSSH 版本 libssh2/1.11.0

谢谢!

php wordpress curl php-curl
1个回答
0
投票

tldr;

  • 太多拥有自己日志的虚拟主机破坏了它。
  • 使用通用日志修复了它。

尾声

我想我已经解决了问题,尽管我看不出与为什么唯一可见的症状是这种破坏卷曲的特殊方式之间的联系。

我有很多虚拟主机,每个虚拟主机都有自己的access_log和error_log。我开始使用故障排除策略,即尝试随机的内容并禁用除两个站点之外的所有站点,以使这两个站点正常工作。然后,我搜索了诸如“虚拟主机太多”之类的内容,并了解了文件限制以及拥有太多单独的日志可能会导致问题。我重写了虚拟主机定义以使用通用日志并恢复了所有这些定义。之后,curl 和 WordPress 更新开始适用于我的所有本地站点。

© www.soinside.com 2019 - 2024. All rights reserved.