病征
无法使用PHP和OpenSSL连接到SMTP服务器。以下相关错误消息可能会出现在故障排除输出中:
PHP Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
PHP Warning: fsockopen(): Failed to enable crypto
PHP Warning: fsockopen(): unable to connect to ssl
PHP User Warning: Unable to connect to SMTP server
解
您缺少系统上的证书颁发机构(CA)文件,或者您提供了证书颁发机构(CA)文件的错误路径。如果未在其中提供CA文件的自定义路径php.ini
文件PHP寻找默认的系统CA根证书捆绑包。如果缺少CA根证书捆绑包,则会收到上述错误消息。解决方案是安装证书颁发机构(CA)捆绑包:
DEBIAN/UBUNTU:
# apt-get install ca-certificates
FEDORA:
# dnf install ca-certificates.noarch
CENTOS/REDHAT
# yum install ca-certificates.noarch
另一种选择是提供一个到证书颁发机构(CA)捆绑包的自定义路径php.ini
配置文件使用openssl.cafile
和openssl.capath
指令。