Iva*_*ele 4 pdo yaml symfony doctrine-orm dbal
我想将我的SSL证书和密钥文件添加到Doctrine DBAL配置中,但我不知道如何实现这一点.
在PHP中,我只需要编写类似于:
$databaseHandler = new \PDO(
'mysql:host=my_host;dbname=my_db',
'username',
'password',
array(
\PDO::MYSQL_ATTR_SSL_KEY => '.../client-key.pem',
\PDO::MYSQL_ATTR_SSL_CERT => '.../client-cert.pem',
\PDO::MYSQL_ATTR_SSL_CA => '.../ca-cert.pem'
)
);
Run Code Online (Sandbox Code Playgroud)
我知道有一个自定义驱动程序选项 driverOptions,我看到了这个答案,但我不确定如何将其转换为YAML.
我觉得我应该写一些接近的东西:
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
driverOptions:
PDO::MYSQL_ATTR_SSL_CA: '.../client-key.pem'
PDO::MYSQL_ATTR_SSL_CERT: '.../client-cert.pem'
PDO::MYSQL_ATTR_SSL_CA: '.../ca-cert.pem'
Run Code Online (Sandbox Code Playgroud)
但双冒号不会真的取悦YAML ......
我找到了比其他方式更容易的方法.进行以下设置app/config/config.yml:
# Doctrine Configuration
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
# Options for SSL connection
options:
MYSQL_ATTR_SSL_CA : %ca_cert%
MYSQL_ATTR_SSL_KEY : %private_key%
MYSQL_ATTR_SSL_CERT : %public_cert%
Run Code Online (Sandbox Code Playgroud)
然后在你的app/config/parameters.yml文件中:
parameters:
...
# SSL Info
private_key: /etc/my.cnf.d/certs/client-key.pem
public_cert: /etc/my.cnf.d/certs/client-cert.pem
ca_cert: /etc/my.cnf.d/certs/ca-cert.pem
Run Code Online (Sandbox Code Playgroud)
我在Symfony3上对此进行了测试,这非常有用.上面的路径可能会有所不同,特别是证书可能会有所不同,具体取决于您的发行版以及您的设置方式.
小智 5
使用Symfony 3.2及更高版本,这变得容易得多:
doctrine:
dbal:
<other configs>
options:
!php/const:PDO::MYSQL_ATTR_SSL_CA: %ca_cert%
!php/const:PDO::MYSQL_ATTR_SSL_KEY: %private_key%
!php/const:PDO::MYSQL_ATTR_SSL_CERT: %public_cert%
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4817 次 |
| 最近记录: |