You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 16升级后PHP 7.1/7.2连接MS-SQL报错求助

解决Ubuntu 16.04下PHP连接MS-SQL Server的ODBC驱动问题

别急,我来一步步帮你搞定这个问题——Ubuntu 16.04搭配PHP 7.x连接SQL Server,核心就是先装对Microsoft的ODBC驱动,再配置好PHP扩展,咱们一步步来:

第一步:安装Microsoft ODBC Driver 13 for SQL Server

  1. 先添加Microsoft官方软件源,这样能直接通过apt安装驱动:
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
  1. 更新apt缓存,然后安装驱动(注意要同意许可协议):
apt-get update
ACCEPT_EULA=Y apt-get install msodbcsql13

这里的ACCEPT_EULA=Y是强制同意微软的许可协议,必须加上才能完成安装。

第二步:安装PHP的SQL Server扩展

PHP需要通过sqlsrvpdo_sqlsrv扩展来连接SQL Server,咱们用pecl来安装:

  1. 先安装依赖工具:
apt-get install php-pear php-dev unixodbc-dev

unixodbc-dev是ODBC的开发依赖,少了它pecl安装扩展会失败。
2. 安装扩展:

pecl install sqlsrv pdo_sqlsrv

如果是PHP 7.2,这个命令同样适用,pecl会自动适配对应版本。

第三步:启用PHP扩展

安装完扩展后,需要让PHP加载它们:

  1. 先找到你的PHP配置文件位置,运行php --ini就能看到Loaded Configuration File的路径,比如/etc/php/7.1/cli/php.ini(命令行PHP)或者/etc/php/7.1/apache2/php.ini(Apache下的PHP)。
  2. 编辑这个配置文件,在末尾添加两行:
extension=sqlsrv.so
extension=pdo_sqlsrv.so

或者用命令直接添加,省得手动编辑:

# 针对命令行PHP
echo "extension=sqlsrv.so" >> /etc/php/7.1/cli/php.ini
echo "extension=pdo_sqlsrv.so" >> /etc/php/7.1/cli/php.ini

# 如果是Apache环境,还要同步修改apache的配置文件
echo "extension=sqlsrv.so" >> /etc/php/7.1/apache2/php.ini
echo "extension=pdo_sqlsrv.so" >> /etc/php/7.1/apache2/php.ini

第四步:验证安装并重启服务

  1. 运行php -m | grep sqlsrv,如果输出里有sqlsrvpdo_sqlsrv,说明扩展加载成功了。
  2. 如果用的是Apache或者Nginx,记得重启web服务让配置生效:
# Apache
systemctl restart apache2

# Nginx(如果用php-fpm的话)
systemctl restart php7.1-fpm
systemctl restart nginx

额外注意点

  • 确保你的Ubuntu 16.04是64位系统,微软的ODBC驱动不支持32位系统。
  • 如果安装过程中遇到权限问题,记得在命令前加sudo(比如sudo apt-get update),毕竟普通用户没权限修改系统配置。

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

火山引擎 最新活动