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

Azure Debian环境下PHP8.1安装pdo_sqlsrv时make失败求助

解决Azure App Service Linux环境下PHP安装sqlsrv/pdo_sqlsrv扩展的编译错误

问题分析

编译时出现fatal error: config.h: No such file or directory,本质是pecl编译过程中路径映射异常,加上Azure App Service Linux环境的编译工具链限制,导致自动编译流程失败。以下是两种可靠的解决方法:


方法一:使用预编译扩展(推荐,避免编译)

Azure App Service Linux无需手动编译,直接使用官方预编译的扩展文件即可:

  • 确认你的App Service使用的PHP版本(可通过php -v查看)
  • 获取对应PHP版本、系统架构的sqlsrv.so和pdo_sqlsrv.so预编译文件
  • 在应用根目录(/home/site/wwwroot)创建ext文件夹,将两个扩展文件上传到该目录
  • 在应用根目录创建.user.ini文件,添加以下配置:
    extension=/home/site/wwwroot/ext/sqlsrv.so
    extension=/home/site/wwwroot/ext/pdo_sqlsrv.so
    
  • 重启App Service,通过php -m命令验证扩展是否加载成功

方法二:修复编译流程,解决config.h缺失问题

如果必须手动编译,按以下步骤操作:

  1. 清理残留的编译文件:
    pecl uninstall -r pdo_sqlsrv sqlsrv
    rm -rf /tmp/pear/temp/*
    
  2. 安装完整的编译依赖:
    apt-get update && apt-get install -y build-essential php-dev libssl-dev unixodbc-dev
    
  3. 手动下载源码并编译安装(以pdo_sqlsrv为例,sqlsrv步骤相同):
    pecl download pdo_sqlsrv
    tar xzf pdo_sqlsrv-*.tgz
    cd pdo_sqlsrv-*
    phpize
    ./configure --with-php-config=/usr/local/bin/php-config
    make && make install
    
  4. 编译完成后,在php.ini中添加扩展配置:
    extension=pdo_sqlsrv.so
    extension=sqlsrv.so
    
  5. 重启App Service验证扩展加载状态

额外注意事项

  • 确保扩展版本与PHP版本兼容:比如PHP 7.4对应sqlsrv 5.9.x系列,PHP 8.0对应5.10.x系列,PHP 8.1+对应更高版本
  • Azure App Service Linux的临时目录会定期清理,不要将扩展文件放在临时目录中

内容的提问来源于stack exchange,提问作者Mike Wright

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:20:33