我有几个子域名(虚拟主机)Laravel(PHP 框架)。所有项目都使用相同的设置通过以下方式发送邮件邮件枪。 (Mailgun 是一种网络服务,您可以向其发送包含电子邮件内容、收件人、主题等的 http 请求,它会为您发送。)
每个子域都有自己的文件夹/var/www/vhosts/system/[subdomain]/conf/
(我认为 Plesk 默认将它们放在那里),并且总有一个文件httpd.conf
允许您为每个子域添加更多设置。在所有这些文件中,我都指定了以下内容:
php_admin_value curl.cainfo "/usr/share/ca-certificates/curl/cacert.pem"
使用以下方式向 Mailgun 发出请求guzzlehttp的组件(一个围绕 curl php 扩展的 Composer 包,以便于使用)。
直到周一,每个子域名在发送电子邮件时都没有问题。然而,周一,其中一个子域名停止发送电子邮件并开始出现错误:
cURL 错误 60:SSL 证书问题:无法获取本地颁发者证书
其余程序使用同一.pem
文件也能正常运行。
我没有改变这些虚拟主机或服务器的配置中的任何内容。
可能是什么原因导致了这个问题?我该如何解决它?
服务器:
Linux [...] 3.2.0-4-amd64 #1 SMP Debian 3.2.73-2+deb7u3 x86_64 GNU/Linux
Plesk:
Product version: 12.5.30 Update #74
Update date: 2018/01/23 06:26
Build date: 2016/06/08 10:00
OS version: Debian 7.9
Revision: 344620
Architecture: 64-bit
Wrapper version: 1.2
PHP:
PHP 5.6.30-1~dotdeb+7.1 (cli) (built: Jan 21 2017 14:50:59)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
阿帕奇:
Server version: Apache/2.2.22 (Debian)
Server built: Jul 20 2016 05:07:38
卷曲:
curl 7.26.0 (x86_64-pc-linux-gnu) libcurl/7.26.0 OpenSSL/1.0.1t zlib/1.2.7 libidn/1.25 libssh2/1.4.2 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: Debug GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP
答案1
Mailgun 的最新证书似乎存在问题。Guzzle cacaert.pem 需要手动更新,请参阅此处获取详细信息:https://www.drupal.org/project/mailgun/issues/2939004