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

Laravel应用连接Azure PostgreSQL失败,触发malloc双重释放错误

解决Laravel连接Azure PostgreSQL时的malloc double free错误

问题背景

原本正常连接Azure PostgreSQL的Laravel应用,更新后出现未知错误;使用pg_connect测试连接时触发内存错误:

php(16056,0x1e14b5300) malloc: double free for ptr 0x132862a00
php(16056,0x1e14b5300) malloc: *** set a breakpoint in malloc_error_break to debug
zsh: abort php test.php

本地PostgreSQL连接正常,更换PHP版本后问题仍存在。


解决方案

  • 匹配pgsql扩展与Azure PostgreSQL版本兼容性
    该内存错误多因PHP的pgsql扩展与Azure PostgreSQL服务器版本不兼容导致。先通过Azure控制台确认数据库版本(如14/15),再用php -i | grep pgsql查看当前扩展版本,核对官方兼容列表后,重新编译或安装匹配的pgsql扩展。

  • 禁用冲突的扩展特性
    新版本pgsql扩展的预准备语句、持久连接等特性可能与Azure服务冲突:

    • 测试脚本中添加参数禁用预准备语句:
      pg_connect("host=your-azure-host port=5432 dbname=your-db user=your-user password=your-pass sslmode=require options='--no-prepared-statements'");
      
    • 在php.ini中关闭持久连接:pgsql.allow_persistent = Off,重启服务后测试。
  • 修正SSL连接配置
    Azure PostgreSQL强制SSL连接,证书或协议不匹配可能引发内存异常:

    • 下载Azure官方根证书,在连接参数中指定:
      pg_connect("host=your-azure-host port=5432 dbname=your-db user=your-user password=your-pass sslmode=verify-full sslrootcert=/path/to/DigiCertGlobalRootCA.crt.pem");
      
    • 确保使用TLS 1.2及以上协议,可在php.ini中设置openssl.ciphers = HIGH:!aNULL:!MD5。
  • 重置系统依赖库
    更新后系统的libpq库可能与pgsql扩展不兼容:

    • macOS(Homebrew):brew reinstall libpq,随后重新编译pgsql扩展。
    • Linux(Debian/Ubuntu):apt-get install --reinstall libpq-dev,再重装php-pgsql包。
  • 调整Laravel数据库配置
    检查config/database.php中的PostgreSQL配置,禁用预准备语句并确保SSL参数正确:

    'pgsql' => [
        'driver' => 'pgsql',
        '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' => 'require',
        'options' => extension_loaded('pgsql') ? [
            PDO::PGSQL_ATTR_DISABLE_PREPARES => true,
        ] : [],
    ],
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:32:49