我已使用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.
答案 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