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

Heroku平台无法安装PHP的ext-sqlsrv与ext-pdo_sqlsrv扩展求助

解决Heroku上无法安装ext-sqlsrv和ext-pdo_sqlsrv扩展的问题

问题背景

已按照指定buildpack完成以下配置,但推送代码至Heroku时,Composer报错找不到ext-sqlsrv和ext-pdo_sqlsrv扩展:

  1. 在.user.ini中指定加载sqlsrv.so和pdo_sqlsrv.so
  2. 在Aptfile中添加相关依赖包
  3. 设置环境变量HEROKU_PHP_PLATFORM_REPOSITORIES指向指定packages.json

报错信息:

remote: Problem 1
remote: - Root composer.json requires PHP extension ext-sqlsrv ^5.9 but it is missing from your system. Install or enable PHP's sqlsrv extension.
remote: Problem 2
remote: - Root composer.json requires PHP extension ext-pdo_sqlsrv ^5.9 but it is missing from your system. Install or enable PHP's pdo_sqlsrv extension.

解决步骤

  • 调整Buildpack加载顺序
    Heroku需要先加载官方PHP buildpack,再加载sqlsrv专用buildpack。执行以下命令检查并调整:

    # 查看当前buildpack顺序
    heroku buildpacks
    # 若顺序错误,先添加官方PHP buildpack到第一位
    heroku buildpacks:add --index 1 heroku/php
    # 再添加sqlsrv buildpack到第二位
    heroku buildpacks:add --index 2 https://github.com/heroku-softtrends/heroku-php-sqlsrv-buildpack
    
  • 修改Composer配置跳过本地扩展检查
    在项目根目录的composer.json中添加platform配置,告知Composer扩展已由外部环境提供:

    "config": {
      "platform": {
        "ext-sqlsrv": "5.9",
        "ext-pdo_sqlsrv": "5.9"
      }
    }
    

    执行composer update更新依赖后再推送。如果临时需要跳过检查,也可设置环境变量:

    heroku config:set COMPOSER_IGNORE_PLATFORM_REQS=1
    
  • 验证Aptfile依赖正确性
    确保Aptfile中只填写依赖包名,而非本地路径,正确内容示例:

    msodbcsql17
    unixodbc-dev
    
  • 检查.user.ini配置
    确认.user.ini在项目根目录,内容无语法错误:

    extension=sqlsrv.so
    extension=pdo_sqlsrv.so
    
  • 查看构建日志定位问题
    推送后通过日志排查细节:

    heroku logs --tail
    

    若日志中出现依赖缺失或编译失败信息,根据提示补充Aptfile中的依赖包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:30:52