使用php 7.3的SQL Server的Microsoft ODBC驱动程序17失败并显示错误消息

时间:2019-06-13 14:11:21

标签: php sql-server

我已使用listview.builder(Ubuntu 16.04.6,php 7.3,apache)将SQL Server的Microsoft ODBC驱动程序17安装为PECL。

我还添加了:

pecl install pdo_sqlsrv sqlsrv

extension=sqlsrv.so extension=pdo_sqlsrv.so ,并在检查由Apache渲染的/etc/php/7.3/apache2/conf.d/xx-sqlsrv.ini时正确地将其列在活动模块上。

当我尝试使用SQLSrv库时,出现错误:

phpinfo();

但是,文件Array ( [0] => Array ( [0] => 01000 [SQLSTATE] => 01000 [1] => 0 [code] => 0 [2] => [unixODBC][Driver Manager]Can't open lib '/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.3.so.1.1' : file not found [message] => [unixODBC][Driver Manager]Can't open lib '/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.3.so.1.1' : file not found ) ) 存在,并且所有人均可访问:

/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.3.so.1.1

通过ls -al /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.3.so.1.1 -rwxr-xr-x 1 root root 2046672 Feb 12 21:08 /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.3.so.1.1 访问也返回错误:

sqlcmd

在其他issues之后,我检查了依赖关系,它们看起来还不错:

sqlcmd -S <server_ip> -U <user_name> -P <pass>
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Can't open lib '/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.3.so.1.1' : file not found.

1 个答案:

答案 0 :(得分:1)

事实证明,/etc/apt/sources.list.d/mssql-release.list中的软件包来源错误。解决问题的步骤:

rm /etc/apt/sources.list.d/mssql-release.list
apt remove msodbcsql17 mssql-tools

根据官方documentation

添加正确的软件包来源
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
#Ubuntu 16.04
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
apt update
ACCEPT_EULA=Y apt-get install msodbcsql17