安装pdo_sqlsrv遇PHP报错:Unsupported processor architecture求解决
解决PHP 8.1连接SQL Server报"Unsupported processor architecture"错误
这个错误核心原因是你安装的sqlsrv/pdo_sqlsrv扩展架构与系统、PHP的架构不匹配,比如系统是ARM64(AWS Graviton实例)但装了X86_64版本的扩展,反之亦然。以下是分步排查和解决方法:
1. 确认系统与PHP的架构
先明确你的EC2实例和PHP的运行架构:
- 查看系统架构:
输出uname -maarch64代表ARM64,x86_64代表X86_64。 - 查看PHP架构:
确保输出和系统架构完全一致。php -i | grep "Architecture"
2. 检查已安装扩展的架构
找到PHP扩展目录,然后检查sqlsrv扩展的架构:
- 先获取扩展目录路径:
php -i | grep "extension_dir" - 检查扩展文件的架构:
比如ARM64的扩展会显示file /path/to/extension_dir/sqlsrv.soELF 64-bit LSB shared object, ARM aarch64,X86_64则显示ELF 64-bit LSB shared object, x86-64。如果这里的架构和系统/PHP不一致,就是问题所在。
3. 重新安装对应架构的扩展
针对ARM64架构(Graviton实例)
你之前用的是X86_64的微软repo,需要替换为ARM64专属repo:
- 卸载现有不兼容的包和扩展:
sudo yum remove -y msodbcsql mssql-tools unixODBC-devel sqlsrv pdo_sqlsrv sudo pecl uninstall sqlsrv pdo_sqlsrv - 添加ARM64版本的微软repo:
sudo yum-config-manager --add-repo https://packages.microsoft.com/config/rhel/7/prod.aarch64.repo - 更新yum并重新安装依赖:
sudo yum update sudo ACCEPT_EULA=Y yum install -y msodbcsql mssql-tools unixODBC-devel re2c gcc-c++ gcc - 重新编译安装扩展:
sudo pecl install sqlsrv sudo pecl install pdo_sqlsrv
针对X86_64架构
如果系统是X86_64但仍报错,可能是编译扩展时的环境问题,尝试:
- 卸载现有扩展:
sudo pecl uninstall sqlsrv pdo_sqlsrv - 清理编译缓存:
rm -rf ~/.pearrc /tmp/pear/* - 重新编译安装:
sudo pecl install sqlsrv sudo pecl install pdo_sqlsrv
4. 验证配置并重启服务
- 确认
php.ini中加载的扩展路径正确(可通过php -i | grep "sqlsrv"查看是否加载成功)。 - 重启PHP-FPM或Web服务器(比如Apache/Nginx):
# 以PHP-FPM为例 sudo systemctl restart php-fpm # 以Apache为例 sudo systemctl restart httpd
额外注意
确保Phalcon框架中使用的SQL Server连接方式正确,比如PDO的DSN格式应为:
$dsn = 'sqlsrv:Server=你的SQLServer地址,端口;Database=数据库名'; $pdo = new PDO($dsn, '用户名', '密码');
内容的提问来源于stack exchange,提问作者TruongGa
相关产品推荐
相关产品推荐

