【发布时间】:2015-07-06 07:23:28
【问题描述】:
我想将我的 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'
)
);
我知道有一个Custom Driver OptiondriverOptions,我看到了this answer,但我不确定如何将它翻译成 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'
但是双冒号并不能真正取悦 YAML...
【问题讨论】:
-
只使用常量的实际值。 php -r "回显 PDO::MYSQL_ATTR_SSL_CA;"产生 1009,因此将 PDO::MYSQL_ATTR_SSL_CA 替换为 1009。也许有点破解,但数字不会改变。
-
哦,你学到了一些东西:每个 PHP 类及其扩展的每个属性都有一个唯一的 id?
-
所有常量都有一个值。虽然该值可能会随着 PHP 的较新版本而改变,但这种情况非常罕见。
-
好的 :) 非常感谢!同时有人可能知道一种“更清洁”的方式,我会这样做。
-
使用常量值而不是常量名是个坏主意。现在 php -r "echo PDO::MYSQL_ATTR_SSL_CA;"在 php 5.5.9 中显示 1012
标签: symfony pdo doctrine-orm yaml dbal