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

升级至PHP 8.1后,Azure Linux WebApp无法找到SQLSRV PDO驱动求助

Azure Linux WebApp升级PHP8.1后缺失MS SQL驱动的解决方法

问题原因

Azure Linux App Service的PHP 8.1官方基础镜像未预安装sqlsrv和pdo_sqlsrv扩展,而PHP 7.4版本的镜像默认包含这些扩展,因此升级后出现驱动缺失问题。

解决方案

方案一:自定义启动脚本全局安装驱动

  1. 在项目根目录创建启动脚本文件 .startup.sh,写入以下内容:
#!/bin/bash

# 安装SQLSRV及PDO_SQLSRV扩展
pecl install sqlsrv pdo_sqlsrv

# 将扩展配置添加到PHP全局配置文件
echo "extension=sqlsrv.so" >> /usr/local/etc/php/conf.d/sqlsrv.ini
echo "extension=pdo_sqlsrv.so" >> /usr/local/etc/php/conf.d/sqlsrv.ini

# 启动Web服务(Apache环境用此命令)
apache2-foreground

如果你的WebApp使用的是Nginx+PHP-FPM环境,将最后一行替换为:

php-fpm
  1. 给脚本添加执行权限:
chmod +x .startup.sh
  1. 将脚本提交到Git仓库并重新部署,之后通过Azure CLI设置启动命令:
az webapp config set --name MyApp --resource-group rg-MyResourceG --startup-file ".startup.sh"

方案二:项目级Composer安装扩展

若不想修改全局配置,可通过Composer安装官方提供的扩展包:

composer require microsoft/msphpsql

安装完成后,在项目的初始化文件(如bootstrap.php)中手动加载扩展:

require_once __DIR__ . '/vendor/microsoft/msphpsql/sqlsrv.so';
require_once __DIR__ . '/vendor/microsoft/msphpsql/pdo_sqlsrv.so';

注意:此方式需确保PHP的extension_dir配置正确,若加载失败可检查路径是否匹配。

验证安装

部署完成后,通过Azure门户进入WebApp的SSH终端,执行以下命令验证驱动是否安装成功:

php -i | grep sqlsrv

若输出包含sqlsrv和pdo_sqlsrv的配置信息,说明安装成功。

关于终端中出现的Cannot load Zend OPcache - it was already loaded警告,属于重复加载OPcache的提示,不影响MS SQL驱动的使用,若需解决可检查启动脚本或PHP配置文件,确保OPcache仅被加载一次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:10:40