【发布时间】:2019-10-08 21:13:37
【问题描述】:
我已经安装了 pgsql 并设置了我的 Laravel config/database.php 如下:
'connection_name' => [
'driver' => 'pgsql',
'host' => env('DB_HOST_2', '127.0.0.1'),
'port' => env('DB_PORT_2', '3306'),
'database' => env('DB_DATABASE_2'),
'username' => env('DB_USERNAME_2'),
'password' => env('DB_PASSWORD_2', ''),
'sslmode' => env('DB_SSLMODE_2'),
'charset' => 'utf8',
'prefix' => '',
'options' => [
'sslcert' => '/some/special/path.crt',
],
'schema' => 'public',
],
“connection_name”位于database.php 的“connections”部分。
在 artisan tinker 中,我收到以下错误,因为它仍在寻找 SSL 证书的默认位置。我无法让它在正确的位置查找证书。
>>> use Illuminate\Support\Facades\DB;
>>> DB::connection('connection_name')->getPdo()
Doctrine\DBAL\Driver\PDOException with message 'SQLSTATE[08006] [7] root certificate file "/home/wes/.postgresql/root.crt" does not exist
Either provide the file or change sslmode to disable server certificate verification.'
【问题讨论】:
-
为什么 ssl(root)cert 在 'options' 中?这是来自文档还是一些教程?我不使用 laravel,但我希望 sslmode 和 sslrootcert 是对等的,而不是在不同的级别。
-
我尝试将这些选项放在兄弟级别,但我看到 Laracasts 上有人建议 Postgres 的正确方法是将它们放在一个“选项”子级中。
标签: php laravel postgresql ssl