TrustSqlServerConnector.php 782 B

1234567891011121314151617181920212223242526272829
  1. <?php
  2. namespace App\Connectors;
  3. use Illuminate\Database\Connectors\SqlServerConnector;
  4. /**
  5. * 信任自签名证书的 SQL Server 连接器
  6. * 解决 ODBC Driver 18 强制 TLS + 自签名证书导致的 "certificate verify failed" 错误。
  7. *
  8. * 在 DSN 末尾追加 ;TrustServerCertificate=1 ,兼容旧版 pdo_sqlsrv (无 SQLSRV_ATTR_TRUST_SERVER_CERTIFICATE 常量)。
  9. */
  10. class TrustSqlServerConnector extends SqlServerConnector
  11. {
  12. /**
  13. * {@inheritdoc}
  14. */
  15. protected function getDsn(array $config)
  16. {
  17. $dsn = parent::getDsn($config);
  18. // 仅在未包含 TrustServerCertificate 时追加
  19. if (strpos($dsn, 'TrustServerCertificate') === false) {
  20. $dsn .= ';TrustServerCertificate=1';
  21. }
  22. return $dsn;
  23. }
  24. }