尝试通过SSL连接到我的MySQL数据库,我已经使用以下命令行通过ssh从Web服务器成功建立了连接:
mysql -h my.host.here --port=5454 -v --ssl-ca=/etc/apache2/ssl/mysql/ca-cert.pem --ssl-cert=/etc/apache2/ssl/mysql/client-cert.pem --ssl-key=/etc/apache2/ssl/mysql/client-key.pem -u user -p
但是,尝试在symfony2和主义中建立相同的连接,我一直得到的只是一个“ SSL错误”
$params = array(
'driver' => 'pdo_mysql',
'user' => 'user',
'password' => 'pass',
'host' => 'my.host.here',
'dbname' => 'media',
'port' => '5454',
);
if($this->container->hasParameter('media_ca') && $this->container->hasParameter('media_cert') && $this->container->hasParameter('media_key')) {
$params['driverOptions'] = array(
PDO::MYSQL_ATTR_SSL_CA => $this->container->hasParameter('media_ca'),
PDO::MYSQL_ATTR_SSL_CERT => $this->container->hasParameter('media_cert'),
PDO::MYSQL_ATTR_SSL_KEY => $this->container->hasParameter('media_key'),
);
}
/* Using this instead with only the ca_cert gives me the same error
if($this->container->hasParameter('media_ca')) {
$params['driverOptions'] = array(
PDO::MYSQL_ATTR_SSL_CA => $this->container->hasParameter('media_ca'),
);
}
*/
$connectionFactory = $this->container->get('doctrine.dbal.connection_factory');
$conn = $connectionFactory->createConnection($params);
return $conn;
在我的日志中:
[2013-10-01 15:23:30] request.Critical:未捕获的PHP异常PDOException:/ var / www / mysite / vendor / doctrine / dbal / lib / Doctrine中的“ SQLSTATE [HY000] [2026] SSL连接错误” /DBAL/Driver/PDOConnection.php第36行{“ exception”:“ [object](PDOException:SQLSTATE [HY000] [2026] / var / www / mysite / vendor / doctrine / dbal / lib / Doctrine / DBAL / Driver / PDOConnection.php:36)“} []
我已仔细检查了Web服务器用户(www-data)是否有权访问证书文件,以及这些证书文件的路径是否正确(在symfony2参数中定义)。
我想不出命令行连接和使用doctrine / symfony2指定的连接之间的其他区别。
您在检索参数时错了。您需要getParameter($param)
方法而不是hasParameter($param)
。这些行是正确的。
PDO::MYSQL_ATTR_SSL_CA => $this->container->getParameter('media_ca'),
PDO::MYSQL_ATTR_SSL_CERT => $this->container->getParameter('media_cert'),
PDO::MYSQL_ATTR_SSL_KEY => $this->container->getParameter('media_key'),
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句