如何在symfony / doctrine上使用SSL连接到MySQL

时间:2013-05-17 01:24:41

标签: php mysql symfony doctrine

我正在尝试连接到启用了SSL的MySQL。 我正在使用Sytrfony2框架和Doctrine。

在普通的PHP中,我可以用

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

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

更新:

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

由于

2 个答案:

答案 0 :(得分:11)

经过长时间的搜索和来自学说聊天室的人们的帮助,我找到了答案。

这是适用于PHP的dbal配置> 5.3.7 它使用三个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连接所有数据库连接。

答案 1 :(得分:7)

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

PDO:MYSQL_ATTR_SSL_KEY: 1007<br>
PDO:MYSQL_ATTR_SSL_CERT: 1008<br>
PDO:MYSQL_ATTR_SSL_CA: 1009

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