Конфигурация SSL для конкретной среды в файле Laravel .env

Я запускаю Laravel 5.1 и имею несколько сред, некоторые из которых требуют 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') ] 

Проблема в том, что когда я устанавливаю эти env () vars в null в средах, которые не используют SSL (например, локальный), он ломается (белый экран и т. Д.). Я должен либо не устанавливать ключ «options», либо устанавливать пустой пул для его работы, который удаляет env () vars, которые затем не будут работать в средах SSL.

Есть ли способ удовлетворить этот ключ, который работает как для SSL, так и для не-SSL-сред?

Related of "Конфигурация SSL для конкретной среды в файле Laravel .env"

Вы можете определить новую переменную среды, которая включает или отключает использование SSL, а затем использовать тернарный оператор для загрузки соответствующей конфигурации.

Добавьте это в ваш .env файл в средах, где требуется поддержка SSL:

 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') ] : [] 

Обычно я не использую логику в файлах конфигурации, но это случай, когда может быть сделано исключение.