从版本 9.1.0 开始,Drupal 核心的更新管理器使用 HTTPS 获取有关可用更新的信息。这意味着Drupal站点使用的PHP必须安装并正确配置OpenSSL。如果 PHP 不支持 OpenSSL,则启用了更新管理器的站点将在其可用更新报告中看到“无法获取可用更新数据”错误消息。
如果您看到此错误,可以采取几个步骤来使事情正常工作:
-
确认网站可以连接到互联网
-
确认已启用 OpenSSL
-
确认站点的证书文件已正确安装和配置
-
如果需要,请将更新管理器配置为回退到 HTTP
确认网站可以连接到互联网
在担心OpenSSL和HTTPS之前,第一步是确保网站可以到达公共互联网。考虑:
-
这是在本地服务器上运行的测试站点,还是在根本没有互联网连接的容器内运行的测试站点?
-
站点是否位于网络代理服务器后面?如果是这样,网络和站点是否正确配置为使用该代理?
该站点必须能够访问公共互联网,否则这些说明中的其余部分都无济于事。
确认已启用 OpenSSL
首先,检查站点的PHP是否启用了OpenSSL:
管理>报告>状态
点击PHP版本(/admin/reports/status/php)下的“更多信息”链接
应该有一个名为“openssl”的部分,您应该看到类似以下内容:
OpenSSL support: enabled
如果没有,您必须查阅 PHP openssl 扩展文档,了解如何在配置文件中启用此扩展。基本上,您需要取消注释或添加如下行:并可能重新启动您的Web服务器守护程序(例如Apache)。详细信息将因托管环境而异。如果您不确定,请咨询您的系统管理员或托管服务提供商。php.iniextension=php_openssl.so
确认站点的证书文件已正确安装和配置
您可能会在站点的日志文件中看到如下错误:
SSL Certificate Problem: Unable to get local issuer certificate
SSL Certificate Problem: Verify that the CA cert is OK.
如果是这样,则意味着您的站点没有安装正确的证书颁发机构 (CA) 证书,或者 PHP 找不到正确的证书。您可以安装 cURL 本身提供的一组受信任证书:
下载cacert.pem
将文件移动到受影响的计算机,例如:cacert.pem
/etc/pki/tls/cacert.pem
C:\php\extras\ssl\cacert.pem
编辑文件并更改参数,例如:php.inicurl.cainfo
curl.cainfo = “/etc/pki/tls/cacert.pem”
curl.cainfo = “C:\php\extras\ssl\cacert.pem”
请注意,在某些 PHP 配置中,您可能需要设置 ,而不是 ,以指向您下载的文件。openssl.cafilecurl.cainfocacert.pem
可能会重新启动您的 Web 服务器(例如 Apache)以使更改生效。php.ini
有关详细信息,请参阅:
https://docs.bolt.cm/3.7/howto/curl-ca-certificates
https://curl.haxx.se/docs/sslcerts.html
https://curl.haxx.se/libcurl/c/libcurl-errors.html
https://stackoverflow.com/questions/13467648/configuring-curl-for-ssl
如果需要,请将更新管理器配置为回退到 HTTP
如果您无权更改站点的PHP配置,或者所有其他方法都失败了,则可以将Drupal的Update Manager配置为回退到使用HTTP。不建议这样做,而且安全性较低(可能会使您面临“中间人”攻击,恶意站点声称 updates.drupal.org 并为您提供虚假信息)。但是,没有任何迹象表明您的网站缺少 Drupal 核心和贡献的模块和主题的可用安全更新可能会更糟。因此,如果需要,可以在文件中设置以下内容:settings.php
$settings['update_fetch_with_http_fallback'] = TRUE;
在这种情况下,更新管理器仍将首先尝试HTTPS,但如果失败,它将使用HTTP再次尝试,并希望获取可用的更新数据,而不是放弃并打印错误消息。
如果您已定义此设置,并且尝试“手动检查”(使用网站的“可用更新”报告中的链接)但仍看到错误消息,请确保您的网站已连接到互联网,您的网络设置正确等。调试站点无法发出出站请求的每种可能情况超出了本文档的范围。祝你好运!
评论