PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA') でつまづいた件。in Laravel 5.8
経緯
Hyper-Vにて開発環境を作っていたときに、Laravel5.8を入れたら表題のエラー。
参考URL
結果
5.8は5.8でも config/database.php
の内容異なる説。真偽は不明。
詳細
参考URL見てもらえばわかるんですが、そのサイトでは
<?php // config/database.php 中略 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]),
の mysql['options']
をコメントアウトすればOKだよって書いてあるんです。
でも、今まで一度もそんなことしたことながなかったので、仮想環境ではなく、ローカル端末に落ちてる Laravel 5.8 の 同じ設定ファイル見たんですね。その内容が以下。
<?php // config/database.php 中略 'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],
おわかりでしょうか、mysql['options']
の内容が、拡張も加味してくれてるんですよ。こっちが正しい気がするのは私だけですかね…。
ということで、ローカルを反映し、完了でした。