Php Laravel.env文件中特定于环境的SSL配置

Php Laravel.env文件中特定于环境的SSL配置,php,mysql,laravel,ssl,laravel-5.1,Php,Mysql,Laravel,Ssl,Laravel 5.1,我运行的是Laravel5.1,有多个环境,有些环境需要SSL,有些环境不需要SSL。当我需要SSL时,database.php中的配置需要mysql驱动程序中的以下内容: 'options' => [ PDO::MYSQL_ATTR_SSL_KEY => env('MYSQL_SSL_KEY'), // /path/to/key.pem PDO::MYSQL_ATTR_SSL_CERT => env('MYSQL_SSL_CERT'), //

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

'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()变量设置为null时,它会中断(白屏等)。我必须要么不设置“options”键,要么设置为空数组,这样它才能工作,这会删除env()变量,而这些变量在SSL环境中无法工作


是否有一种方法可以满足此密钥,该密钥同时适用于SSL和非SSL环境?

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

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

MYSQL_SSL=true // not having this variable defined or being false, will disable SSL
config/database.php
文件中,修改要加载的连接的
选项
键值,如下所示:

'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')
] : []
我通常反对在配置文件中使用逻辑,但在这种情况下可能会出现异常