使用Doctrine(pdo_mysql)连接AWS MySQL RDS SSL失败求助
解决Doctrine pdo_mysql连接AWS RDS SSL失败的问题
核心问题原因
pdo_mysql驱动不支持Doctrine的sslmode参数,需要直接通过PDO的SSL属性配置,结合AWS RDS的CA证书来建立信任连接。
具体解决步骤
下载AWS RDS CA证书
下载对应区域(你的实例是eu-west-1)的RDS根CA证书,保存到服务器PHP进程可访问的路径,比如/var/www/html/rds-ca-2019-root.pem。配置Doctrine的PDO驱动选项
在Doctrine连接配置中,通过driverOptions传递PDO的SSL相关参数,指定CA证书路径:
PHP数组配置示例
$connectionParams = [ 'dbname' => '你的数据库名', 'user' => 'User', 'password' => '你的密码', 'host' => 'mysql-xx-abc.eu-west-1.rds.amazonaws.com', 'driver' => 'pdo_mysql', 'driverOptions' => [ PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/rds-ca-2019-root.pem', // 仅测试场景下关闭证书验证(生产环境不推荐) // PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false, ], ]; $entityManager = \Doctrine\ORM\EntityManager::create($connectionParams, $config);
Symfony YAML配置示例
doctrine: dbal: default_connection: default connections: default: url: 'mysql://User:你的密码@mysql-xx-abc.eu-west-1.rds.amazonaws.com/你的数据库名' driver: pdo_mysql driver_options: !php/const PDO::MYSQL_ATTR_SSL_CA: '/var/www/html/rds-ca-2019-root.pem' # !php/const PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT: false
关键检查项
- 确保PHP进程有权限读取CA证书文件,可执行
chmod 644 /var/www/html/rds-ca-2019-root.pem调整权限。 - 通过
phpinfo()查看pdo_mysql扩展是否启用了OpenSSL支持,确认PDO::MYSQL_ATTR_SSL_CA等属性可用。 - 查看PHP错误日志,定位具体连接错误(比如证书路径错误、验证失败等)。
内容的提问来源于stack exchange,提问作者Jawad
相关产品推荐
相关产品推荐

