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

Docker+Laravel+Jenkins测试阶段证书故障排查求助

解决Laravel测试环境迁移时的TLS证书及MySQL命令废弃问题

核心问题分析

执行php artisan migrate '--env=testing' --seed时出现两个关键问题:

  1. TLS/SSL错误:ERROR 2026 (HY000): TLS/SSL error: self-signed certificate in certificate chain,这是导致数据库schema加载失败的直接原因
  2. 命令废弃提示:mysql命令已废弃(建议使用/usr/bin/mariadb),虽不直接阻断流程,但需消除警告避免潜在问题

解决方案步骤

一、修复TLS/SSL自签名证书错误

方案1:测试环境直接禁用SSL(推荐)

测试环境通常无需严格的SSL加密,可直接在配置中关闭:

  • 编辑测试环境变量文件.env.testing,添加或修改:
    MYSQL_SSL_MODE=disable
    
  • 或者修改config/database.php中testing数据库连接的配置:
    'testing' => [
        'driver' => 'mysql',
        // 其他原有配置...
        'sslmode' => 'disable',
    ],
    

方案2:信任自签名证书(需保留SSL场景)

如果必须保留SSL连接,需将自签名CA证书加入系统信任库:

  • Debian/Ubuntu系统:
    1. 将CA证书文件复制到系统证书目录:
      sudo cp /path/to/your/ca-cert.pem /usr/local/share/ca-certificates/
      
    2. 更新证书信任链:
      sudo update-ca-certificates
      
  • RHEL/CentOS系统:
    1. 复制证书到锚点目录:
      sudo cp /path/to/your/ca-cert.pem /etc/pki/ca-trust/source/anchors/
      
    2. 提取并更新信任链:
      sudo update-ca-trust extract
      
  • 同时在Laravel数据库配置中指定CA证书路径:
    'testing' => [
        'driver' => 'mysql',
        // 其他原有配置...
        'options' => [
            PDO::MYSQL_ATTR_SSL_CA => '/path/to/your/ca-cert.pem',
        ],
    ],
    

二、消除MySQL命令废弃警告

方案1:创建软链接兼容原有命令

通过软链接让mysql命令指向mariadb,无需修改应用配置:

sudo ln -s /usr/bin/mariadb /usr/bin/mysql

方案2:修改Laravel配置指定命令路径

直接在数据库配置中指定使用mariadb命令:

'testing' => [
    'driver' => 'mysql',
    // 其他原有配置...
    'binary' => '/usr/bin/mariadb',
],

验证修复

执行原迁移命令确认问题解决:

php artisan migrate --env=testing --seed

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:51:04