将PDO::MYSQL_ATTR_SSL_CA与Propel ORM一起使用



我正在尝试使用Propel reverse命令对数据库进行逆向工程。我试图连接到的数据库需要SSL证书,这就是我在应用程序中连接到它的方式:

new PDO(
    'mysql:host=localhost;dbname=blog',
    'root', '', array(PDO::MYSQL_ATTR_SSL_CA => '/path/ssl-cert.crt'
);

我的Propel配置文件:

propel:
  database:
    connections:
      blog:
        adapter: mysql
        classname: PropelRuntimeConnectionConnectionWrapper
        dsn: "mysql:host=localhost;dbname=blog"
    user: root
    password:
    options:
      PDO::MYSQL_ATTR_SSL_CA: /path/ssl-cert.crt

我得到以下错误:

[SymfonyComponentConfigDefinitionExceptionInvalidConfigurationException]
Unrecognized option "PDO::MYSQL_ATTR_SSL_CA" under "propel.database.connections.gateway.options" 

我读过这篇文章:安全的Propel连接,远程MySQL,到旧版本Propel的第一个答案链接,我还尝试了另一个答案,用它的整数值替换PDO::MYSQL_ATTR_SSL_CA。什么都没用,以前有人遇到过这个问题吗?我错过了什么?

目前似乎只支持ATTR_PERSISTENT选项:属性配置

应该很容易分叉并用类似的东西进行修补:

->arrayNode('options')
    ->children()
        ->booleanNode('ATTR_PERSISTENT')->defaultFalse()->end()
        ->scalarNode('PDO::MYSQL_ATTR_SSL_CA')->end()
    ->end()
->end()

我建议直接在vendor/propel/propel/src/Propel/Common/Config/PropelConfiguration.php中添加这个标量节点,并检查是否有任何隐藏的错误或缺少的功能。

最新更新