php - SSL_CTX_set_default_verify_paths 失败

标签 php mysql ssl pdo

我从以下位置设置 SSL:http://dev.mysql.com/doc/refman/5.0/en/creating-ssl-files-using-openssl.html

数据库服务器显示 SSL 已启用。在网络服务器上,我可以这样做:

mysql -h xx.xx.xxx.xxx --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -uMyUser -p

假设我在包含 SSL 证书的目录中,它工作正常。如果我移出目录,我会得到:

ERROR 2026 (HY000): SSL connection error: SSL_CTX_set_default_verify_paths failed

现在在 PHP 中,我有:

<?php
if(file_exists('/ssl/client-key.pem')) echo 'wtf';
if(file_exists('/ssl/client-cert.pem')) echo 'wtf';
if(file_exists('/ssl/ca.pem')) echo 'wtf';
function newPDO($host, $user, $password, $database) {
        $ssl = array(
                PDO::MYSQL_ATTR_SSL_KEY    =>'/ssl/client-key.pem',
                PDO::MYSQL_ATTR_SSL_CERT=>'/ssl/client-cert.pem',
                PDO::MYSQL_ATTR_SSL_CA    =>'/ssl/ca.pem'
        );
        try {
                $dbl = new PDO("mysql:host=$host;dbname=$database", $user, $password, $ssl);
                $dbl->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch(PDOException $e) {
echo $e->getMessage();

        }
        return $dbl;
}

$dbl = newPDO('xx.xx.xxx.xxx', 'user', 'pass' ,'database');

?>

OUTPUT: wtfwtfwtfSQLSTATE[HY000] [2026] SSL connection error: SSL_CTX_set_default_verify_paths failed

这与我在 SSH 中路径错误时遇到的错误相同。我在 PHP 中验证了路径,输出显示这些文件存在。我正在使用 PHP 5.4.16。

想法?

最佳答案

sudo yum remove php-mysql
sudo yum install php-mysqlnd
sudo reboot

关于php - SSL_CTX_set_default_verify_paths 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30793598/

相关文章:

php - 如何使用 the_field 从 https 加载图像

php - mysql_fetch_row() 不是有效的结果资源

php - CodeIgniter:无法使用提供的连接到您的数据库服务器

php - 米克罗数据库 : how to perform a replace with where statement instead of primary key

php - 重复键更新上的 Mysql 不起作用

MySQL - 在 SELECT 子句中

mysql - 如何在MySQL中合并报表输出?

mysql - 如何将 MySQL Views 与 Ms Access 2007 一起使用,而不会对字符串列造成垃圾?

hadoop - 从 CDH Hadoop 集群连接到 S3 时出现 "peer not authenticated"异常

nginx - 你如何配置nginx(dev分支)拒绝使用低于TLS1.1的?