解决 wordpress或其他PHP程序在 PHP 5.6 以上SMTP 发不出邮件 和 无法访问SSL URL的问题
问题
在使用PHP 5.6以上使用SMTP发送邮件时,当连接为使用SSL的时候,或者用PHP访问SSL网站的时候,有时候会报如下的错误 File(/etc/ca-bundle.crt) is not within the allowed。
wordpress 也一样,在使用PHP 5.6以上时,SMTP有时候也不能发送邮件。
1 |
2018-04-01 07:00:55 Connection: Failed to connect to server. Error number 2. "Error notice: stream_socket_client(): open_basedir restriction in effect. File(/etc/ca-bundle.crt) is not within the allowed path(s): |
原因是 PHP在访问SSL的链接时,需要用到本地的操作系统证书链,假如证书链配置错误的话,就不能访问SSL链接。
解决方案
找到php配置里面的 curl.cainfo 和 openssl.cafile 属性并改成本地操作系统的实际配置路径
宝塔面板在 下图所示的位置修改
Ubuntu /Debian
1 2 |
curl.cainfo =/etc/ssl/certs/ca-certificates.crt openssl.cafile=/etc/ssl/certs/ca-certificates.crt |
Fedora / RHEL / CentOS
1 2 |
curl.cainfo =/etc/pki/tls/certs/ca-bundle.crt openssl.cafile=/etc/pki/tls/certs/ca-bundle.crt |