存在类似的问题,但没有帮助。
在 Apache 2.4 上安装 php5-fpm 通过 SSL 连接到远程 MySql 数据库。
可以通过命令行连接MySQL
mysql -u myname -p'pass' -h xx.xx.xx.xx 数据库名
无法通过 PHP 脚本连接到 MySQL。
define("DB_PASSWORD", $dbpass);
define("DB_DATABASE", $dbname);
define("DB_DSN", "mysql:host=$dbhost;dname=$dbname");
$conn = new PDO(DB_DSN,DB_USER,DB_PASSWORD);
返回错误:PHP fatal error :未捕获异常“PDOException”,消息为“找不到驱动程序”
模块已加载
php5-fpm -m
...
PDO
pdo_mysql
...
php5-fpm -i
PDO
PDO support => enabled
PDO drivers => mysql
pdo_mysql
PDO Driver for MySQL => enabled
Client API version => 5.5.43
Directive => Local Value => Master Value
pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
自从
1) php5-fpm 在端口 9000 上运行,而不是套接字
2) MySQL 在远程服务器端口 3306 上并使用 SSL
在这里捕获救命稻草,但无法弄清楚为什么这行不通。
讨厌回答我自己的问题,但这里是答案,以防其他人将来遇到类似问题。
忘记了 PDO 请求中的 SSL 证书。
添加:
, array(
PDO::MYSQL_ATTR_SSL_KEY => '/etc/mysql/client-key.pem',
PDO::MYSQL_ATTR_SSL_CERT => '/etc/mysql/client-cert.pem',
PDO::MYSQL_ATTR_SSL_CA => '/etc/mysql/ca-cert.pem'
)
构造函数所以
$conn = new PDO(DB_DSN,DB_USER,DB_PASSWORD, array(
PDO::MYSQL_ATTR_SSL_KEY => '/etc/mysql/client-key.pem',
PDO::MYSQL_ATTR_SSL_CERT => '/etc/mysql/client-cert.pem',
PDO::MYSQL_ATTR_SSL_CA => '/etc/mysql/ca-cert.pem'
)
);
我是一名优秀的程序员,十分优秀!