首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel .env文件中特定环境的SSL配置

问Laravel .env文件中特定环境的SSL配置
EN

Stack Overflow用户
提问于 2015-11-16 17:48:57
回答 1查看 3K关注 0票数 5

我正在运行Laravel5.1,并且有多个环境,有些需要SSL,有些不需要。当我需要SSL时,我在database.php中的配置需要mysql驱动程序中的以下内容:

代码语言:javascript
复制
'options'   => [
    PDO::MYSQL_ATTR_SSL_KEY     => env('MYSQL_SSL_KEY'), // /path/to/key.pem
    PDO::MYSQL_ATTR_SSL_CERT    => env('MYSQL_SSL_CERT'), // /path/to/cert.pem
    PDO::MYSQL_ATTR_SSL_CA      => env('MYSQL_SSL_CA'), // /path/to/ca.pem
    PDO::MYSQL_ATTR_SSL_CIPHER  => env('MYSQL_SSL_CIPHER')
]

问题是,当我在不使用SSL (例如本地)的环境中将这些env() vars设置为null时,它会中断(白屏幕等.)。我必须要么不设置"options“键,要么将其设置为空数组才能工作,这样就可以删除在SSL环境中无法工作的env() vars。

是否有一种方法可以满足SSL和非SSL环境中的密钥?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-16 20:06:20

可以定义启用或禁用SSL使用的新环境变量,然后使用三元运算符加载适当的配置。

在需要启用数据库SSL的环境中,将此添加到.env文件中:

代码语言:javascript
复制
MYSQL_SSL=true // not having this variable defined or being false, will disable SSL

在config/database.php文件中,修改连接的options键值,如下所示:

代码语言:javascript
复制
'options' => (env('MYSQL_SSL')) ? [
    PDO::MYSQL_ATTR_SSL_KEY    => env('MYSQL_SSL_KEY'),  // /path/to/key.pem
    PDO::MYSQL_ATTR_SSL_CERT   => env('MYSQL_SSL_CERT'), // /path/to/cert.pem
    PDO::MYSQL_ATTR_SSL_CA     => env('MYSQL_SSL_CA'),   // /path/to/ca.pem
    PDO::MYSQL_ATTR_SSL_CIPHER => env('MYSQL_SSL_CIPHER')
] : []

我通常反对在配置文件中使用逻辑,但在这种情况下可能会出现异常。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33741546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档