数据库
首页 > 数据库> > php-将PDO :: MYSQL_ATTR_SSL_CA与Propel ORM一起使用

php-将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: Propel\Runtime\Connection\ConnectionWrapper
        dsn: "mysql:host=localhost;dbname=blog"
    user: root
    password:
    options:
      PDO::MYSQL_ATTR_SSL_CA: /path/ssl-cert.crt

我收到以下错误:

[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException]
Unrecognized option "PDO::MYSQL_ATTR_SSL_CA" under "propel.database.connections.gateway.options" 

我读了这篇文章:Secure Propel connection, remote MySQL,第一个答案链接到Propel的旧版本,我还尝试了替代答案,用其整数值替换PDO :: MYSQL_ATTR_SSL_CA.没有任何效果,以前有人遇到过这个问题吗?我想念什么?

解决方法:

似乎目前仅支持ATTR_PERSISTENT选项:PropelConfiguration

进行分叉并使用以下内容进行修补应该相当容易:

->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中添加此标量节点,并检查是否存在任何隐藏的错误或缺少功能.

标签:ssl-certificate,php,propel2
来源: https://codeday.me/bug/20191119/2035898.html