6

我正在尝试连接到启用了 SSL 的 MySQL。我正在使用带有 Doctrine 的 Symfony2 框架。

在普通的 PHP 中,我可以用

$link = mysql_connect("127.0.0.1:3306","test","testpass",true,MYSQL_CLIENT_SSL);

有谁知道我如何在 symfony/doctrine 中做到这一点?config.yml 中正确的学说配置是什么?

更新:

也许我的问题是“config.yml 中正确的学说配置是什么?” 是错的。那么,我该怎么做呢?我应该从哪里开始?

谢谢

4

2 回答 2

15

经过长时间的搜索,在教义聊天室的帮助下,我找到了答案。

这是适用于 PHP > 5.3.7 的 dbal 配置 它使用三个 PDO 常量,这些常量在 5.3.7 之前的 PHP 中不可用

在标准 PDO 连接中:

$conn = new PDO("mysql:host=localhost;port=3307;database=dbname", "user1", "password1",
    array(
        1010 => '/path/to/certs/priv_key.pem',
        1011 => '/path/to/certs/pub_cert.pem',
        1012 => '/path/to/certs/ca_cert.pem',
    )
);

如果尝试上面的代码给您一个错误,那么您的 PHP 版本可能 < 5.3.7,那么您不太可能能够将 PDO 与 SSL 一起使用。

现在解决 config.yml 中的 DBAL 配置

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver:   %database_driver%
                host:     %database_host%
                port:     %database_port%
                dbname:   %database_name%
                password: %database_password%
                charset:  UTF8
                mapping_types:
                    enum: string
                options:
                    1010 : %priv_key% 
                    1011 : %pub_cert% 
                    1012 : %ca_cert%

            default2: # second connection ...

    orm:
        # orm configuration here ....

希望这可以帮助任何尝试使用 SSL 进行连接的人。事实上,如果可能的话,建议对所有数据库连接使用 SSL 进行连接。

于 2013-06-25T00:31:06.290 回答
8

只是想指出,以下SSL 属性常量的整数值在 PHP 5.4.16 中如下所示:

PDO:MYSQL_ATTR_SSL_KEY: 1007
PDO:MYSQL_ATTR_SSL_CERT: 1008
PDO:MYSQL_ATTR_SSL_CA: 1009

它们可能因一个版本而异,so best to check these values before plugging them into the DBAL confiugration.

于 2014-01-08T08:26:50.530 回答