You need to enable JavaScript to run this app. M1芯片MacOS Big Sur PHP8环境PDO_PGSQL扩展安装问题解决
优惠活动
大模型
产品
解决方案
定价
更多

M1芯片MacOS Big Sur PHP8环境PDO_PGSQL扩展安装问题解决

M1芯片Mac OS Big Sur下PHP 8 PDO_PGSQL扩展加载失败解决方案

核心故障根因

dlopen(...): image not found的报错并非php.ini配置错误,是M1 ARM架构下Homebrew常规安装流程的兼容问题:要么是生成的pdo_pgsql扩展文件架构与当前PHP不匹配(混入了x86转译版本的文件),要么是扩展编译时未正确关联PostgreSQL客户端库路径,导致PHP启动加载阶段直接失败。就算php.ini里手动填了扩展开启项,实际加载流程在启动时就已中断,最终表现为Adminer检测不到PgSQL相关扩展、执行artisan命令时抛出动态库加载警告。

分步解决流程

  • 架构一致性校验
    • 执行file $(which php)确认当前运行的PHP为原生ARM64架构,若输出显示x86_64,说明当前终端/PHP安装走了Rosetta转译路径,需退出转译终端后重新指向Homebrew原生路径的PHP
    • 执行file /opt/homebrew/lib/php/pecl/20190902/pdo_pgsql.so确认对应扩展文件的架构,若输出为x86_64或文件不存在,直接删除对应失效的扩展文件,避免加载时的路径冲突
  • 依赖库前置准备
    • 执行brew install libpq安装原生ARM64版本的PostgreSQL客户端依赖
    • 将libpq的环境变量追加到shell配置文件(~/.zshrc):
      export PATH="/opt/homebrew/opt/libpq/bin:$PATH"
      export LDFLAGS="-L/opt/homebrew/opt/libpq/lib"
      export CPPFLAGS="-I/opt/homebrew/opt/libpq/include"
      
    • 执行source ~/.zshrc让环境变量立即生效
  • 原生编译安装扩展
    • 直接调用Homebrew路径下的PECL执行编译安装:/opt/homebrew/bin/pecl install pdo_pgsql
    • 安装过程中提示输入pg_config路径时,填写/opt/homebrew/opt/libpq/bin/pg_config
    • 注意:全程不要在Rosetta转译的终端窗口执行安装命令,否则会编译出x86架构的扩展文件,依然会触发image not found的加载错误
  • 配置文件校验
    • 检查php.ini中的扩展引用配置,使用纯扩展名而非绝对路径,确保配置项为:
      extension=pgsql
      extension=pdo_pgsql
      
    • 若为Web服务场景,需单独核对PHP-FPM加载的php.ini路径与CLI路径是否一致,避免出现CLI端扩展正常、Web端未加载的情况,这也是Adminer检测不到扩展的常见诱因
  • 功能验证
    • 执行php -m | grep -E "pgsql|pdo_pgsql",若输出中包含两个扩展模块,说明CLI端加载正常
    • 重新执行php artisan serve,确认启动阶段不再出现动态库加载警告
    • 访问Adminer页面,验证PostgreSQL数据库连接功能是否正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 10:27:00