【问题标题】:Use PDO::MYSQL_ATTR_SSL_CA with Propel ORM将 PDO::MYSQL_ATTR_SSL_CA 与 Propel ORM 一起使用
【发布时间】:2015-11-20 21:27:17
【问题描述】:

我正在尝试使用 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 替换为其整数值。没有任何效果,以前有人遇到过这个问题吗?我错过了什么?

【问题讨论】:

    标签: php ssl-certificate propel2


    【解决方案1】:

    目前好像只支持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 中,并检查是否有任何隐藏的错误或缺少的功能。

    【讨论】:

    • 谢谢亚历克斯。由于 Propel 中似乎缺少更多选项,我可能会使用自定义解决方案。但是,您的回答提供了一个很好的解决方案。
    猜你喜欢
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 2022-01-12
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多