gno*_*lak 4 php mysql doctrine symfony
我正在尝试连接到启用了SSL的MySQL.我正在使用带有Doctrine的Symfony2框架.
在普通的PHP中,我可以实现这一点
$link = mysql_connect("127.0.0.1:3306","test","testpass",true,MYSQL_CLIENT_SSL);
Run Code Online (Sandbox Code Playgroud)
有没有人知道我如何在symfony/doctrine中做到这一点?config.yml中正确的学说配置是什么?
更新:
也许我的问题是"config.yml中正确的学说配置是什么?" 是错的.那么,我该怎么做呢?我应该从哪里开始?
谢谢
gno*_*lak 12
经过长时间的搜索和来自学说聊天室的人们的帮助,我找到了答案.
这是适用于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',
)
);
Run Code Online (Sandbox Code Playgroud)
如果尝试上面的代码会给您一个错误,那么您的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 ....
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助任何尝试使用SSL连接的人.事实上,如果可以的话,建议使用SSL连接所有数据库连接.
小智 8
只想指出PHP 5.4.16中以下SSL属性常量的整数值如下:
PDO:MYSQL_ATTR_SSL_KEY: 1007<br>
PDO:MYSQL_ATTR_SSL_CERT: 1008<br>
PDO:MYSQL_ATTR_SSL_CA: 1009
Run Code Online (Sandbox Code Playgroud)
它们可能因版本而异, so best to check these values before plugging them into the DBAL confiugration.