You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 11连接Azure PostgreSQL时SSL证书验证失败求助

解决Laravel 11连接Azure PostgreSQL的SSL证书验证失败问题

问题根源

你通过pg_connect直接连接时指定了sslrootcert参数指向Azure要求的根证书路径,但Laravel默认的PostgreSQL数据库配置未包含该参数,导致PDO连接时无法完成SSL证书验证,抛出SQLSTATE[08006] [7] SSL error: certificate verify failed错误。

解决方案

1. 在.env文件补充SSL配置

在项目根目录的.env文件中添加以下配置项:

DB_SSLMODE=require
DB_SSLROOTCERT=c:\ssl\DigiCertGlobalRootCA.crt.pem

2. 修改数据库配置文件

打开config/database.php,找到pgsql连接的配置数组,新增SSL证书相关参数:

'pgsql' => [
    'driver' => 'pgsql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '5432'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'charset' => 'utf8',
    'prefix' => '',
    'prefix_indexes' => true,
    'search_path' => 'public',
    'sslmode' => env('DB_SSLMODE', 'prefer'),
    'sslrootcert' => env('DB_SSLROOTCERT'), // 新增SSL根证书路径配置
    'options' => extension_loaded('pdo_pgsql') ? array_filter([
        PDO::PGSQL_ATTR_SSL_MODE => env('DB_SSLMODE', 'prefer'),
        PDO::PGSQL_ATTR_SSL_ROOT_CERT => env('DB_SSLROOTCERT'), // 向PDO传递证书路径
    ]) : [],
],

3. 清除配置缓存

修改配置后,运行以下命令清除Laravel配置缓存,确保新配置生效:

php artisan config:clear

验证

完成上述步骤后,重新启动Laravel应用即可正常连接Azure PostgreSQL数据库。

内容的提问来源于stack exchange,提问作者Hanzcerb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 12:27:10