在EC2实例上的Amazon Linux中为MSSQL Server安装ODBC驱动程序13

问题:

需要从PHP代码访问和执行MSSQL存储过程。

版本详情:

本地开发机器 – 带有PHP 7的XAMPP的Windows 10

生产系统 – 亚马逊AWS AMI Linux与PHP 5.3.2

我需要的是:

想要使用odbc连接访问我的LOCAL以及LIVE服务器上的MSSQL。

我试过的LIVE服务器:

希望确保LIVE服务器与软件包兼容,并且能够正确安装所需的软件包。

因此,从以下步骤开始:

1)看看下面的链接,我发现我们需要使用ODBC来更快的数据访问: https : //stackoverflow.com/a/31105561

2)尝试在Amazon Linux上安装以下ODBC驱动程序,如下所述:

(假设RHEL 6安装程序也可以在Amazon Linux上运行,如果错误请告诉我)

  • 用于SQL Server的Microsoft ODBC驱动程序13.1 – Windows + Linux

sudo su curl packages.microsoft.com/config/rhel/6/prod.repo> /etc/yum.repos.d/mssql-release.repo

出口

sudo yum删除unixODBC#以避免冲突

sudo ACCEPT_EULA = Y yum安装msodbcsql-13.0.1.0-1 mssql-tools

但安装程序无法显示下面的错误:

Error: msodbcsql conflicts with unixODBC-utf16-2.3.1-1.x86_64 Error: Package: msodbcsql-13.1.4.0-1.x86_64 (packages-microsoft-com-prod) Requires: unixODBC >= 2.3.1 Available: unixODBC-2.2.14-14.7.amzn1.i686 (amzn-main) unixODBC = 2.2.14-14.7.amzn1 

3)因此,试图安装unixODBC使用http://www.unixodbc.org/

 - Downloaded the package via curl - gunzip unixODBC*.tar.gz - tar xvf unixODBC*.tar 

然后,使用以下命令来安装它们:

 ./configure make make install 

4)重新启动httpd服务,并再次尝试第2步,但安装程序失败,第2点提到相同的错误。

我尝试的LOCAL机器:

  1. 为Microsoft SQL Server – Windows + Linux下载Microsoft ODBC驱动程序13.1的.msi文件
  2. 安装在我的机器上,并重新启动xampp的Apache。 但是我仍然收到Uncaught PDOException: could not find driver

更新 :通过在php.ini中添加扩展dll并重新启动服务器解决了本地系统中的问题。

任何人都可以让我知道我在configuration中错过了什么?

解决方法

由于安装的直接链接不工作,使用下面的命令行下载了脱机安装的rpm文件:

sudo mkdir /tmp/RedHat6Packages

sudo curl https://packages.microsoft.com/rhel/6/prod/msodbcsql-13.1.4.0-1.x86_64.rpm > /tmp/RedHat6Packages/msodbcsql-13.1.4.0-1.x86_64.rpm

sudo curl https://packages.microsoft.com/rhel/6/prod/mssql-tools-14.0.4.0-1.x86_64.rpm > /tmp/RedHat6Packages/mssql-tools-14.0.4.0-1.x86_64.rpm

尝试使用以下命令离线安装: cd /tmp/RedHat6Packages/ sudo yum localinstall msodbcsql-13.1.4.0-1.x86_64.rpm sudo yum localinstall mssql-tools-14.0.4.0-1.x86_64.rpm

但仍然得到了相同的错误: error: Failed dependencies: libodbcinst.so.2()(64bit) is needed by msodbcsql-13.1.4.0-1.x86_64 unixODBC >= 2.3.1 is needed by msodbcsql-13.1.4.0-1.x86_64find命令来检查软件包: sudo yum provides /usr/lib64/libodbcinst.so.2

这显示了以下警告:

 Loaded plugins: priorities, update-motd, upgrade-helper 2 packages excluded due to repository priority protections unixODBC-2.2.14-14.7.amzn1.x86_64 : A complete ODBC driver manager for Linux Repo : amzn-main Matched from: Filename : /usr/lib64/libodbcinst.so.2 unixODBC-utf16-2.3.1-1.x86_64 : ODBC driver manager with UTF16 character conversion enabled by default Repo : packages-microsoft-com-prod Matched from: Filename : /usr/lib64/libodbcinst.so.2 

直接跳转到解决scheme

检查了下面提到的链接:

这是什么意思:由于存储库优先级保护而被排除的软件包

通过编辑/etc/yum/pluginconf.d/priorities.conf并设置enabled = 0禁用优先级

能够使用提到的相同命令安装驱动程序: cd /tmp/RedHat6Packages/ sudo yum localinstall msodbcsql-13.1.4.0-1.x86_64.rpm sudo yum localinstall mssql-tools-14.0.4.0-1.x86_64.rpm

仍然无法确定扩展文件的位置,但是已经创build了其他问题( 在Amazon EC2 Linux上安装MSSQL ODBC 13.1之后的下一步 )作为此问题的目的已得到解决。

作为Linux的新手(特别是从Windows迁移的人),find上述解决scheme确实很困难。 希望它可以帮助别人!