問題:
PHPコードからMSSQLストアドプロシージャにアクセスして実行する必要があります。
バージョンの詳細:
ローカル開発マシン-Windows 10 with XAMPP with PHP 7
本番システム-Amazon AWS AMI Linux with PHP 5.3.2
必要なもの:
Odbc接続を使用して、ローカルサーバーとライブサーバーのMSSQLにアクセスしたい。
LIVEサーバーで試した内容:
LIVEサーバーがパッケージと互換性があり、必要なパッケージを正しくインストールできることを確認したい。
したがって、次の手順で開始しました:
1)以下のリンクを調べたところ、より高速なデータアクセスのためにODBCを使用する必要があることがわかりました: https://stackoverflow.com/a/31105561
2)以下のように、Amazon Linuxに次のODBCドライバをインストールしようとしました:
(RHEL 6インストーラーがAmazon 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 install 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)したがって、 http://www.unixodbc.org/ を使用してunixODBCをインストールしようとしました
- Downloaded the package via curl
- gunzip unixODBC*.tar.gz
- tar xvf unixODBC*.tar
次に、次のコマンドを使用して同じものをインストールします。
./configure
make
make install
4)httpdサービスを再起動し、ステップ2を再試行しましたが、インストーラーはポイント2で述べたのと同じエラーで失敗しました.
ローカルマシンで試したこと:
Uncaught PDOException: could not find driver
[〜#〜] update [〜#〜]:php.iniに拡張DLLを追加することでローカルシステムの問題を解決し、サーバーを再起動しました。
LIVE構成で何を逃したかを誰かに教えてもらえますか?
ソリューションへのアプローチ
インストールの直接リンクが機能していなかったため、以下の行を使用してオフラインインストール用の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_64
パッケージをチェックするコマンドが見つかりました:_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
_
直接ソリューションにジャンプします
以下のリンクを確認しました:
それはどういう意味ですか:パッケージはリポジトリの優先保護のために除外されました
_/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
_
まだ拡張ファイルの場所を把握できませんが、この質問の目的として、他の質問( MSSQLのインストール後の次のステップODBC 13.1 on Amazon EC2 Linux ))を作成しました解決しました。
Linuxの初心者(特にWindowsから移行した人)として、上記の解決策を見つけるのは本当に困難でした。それが誰かを助けることを願っています!!
Amazon Linux AMIで機能するコマンドは次のとおりです。
curl https://packages.Microsoft.com/config/rhel/7/prod.repo | Sudo tee /etc/yum.repos.d/msprod.repo1
Sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
Sudo yum info unixODBC*
Sudo yum install mssql-tools unixODBC-devel
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' | tee -a ~/.bash_profile && source ~/.bash_profile
ソース: Install sqlcmd and bcp the SQL Server command-line tools on Linux 。
それ以外の場合は、このように競合しない古いバージョンをインストールしてみてください post 。
Sudo ACCEPT_EULA=Y yum install msodbcsql-13.0.1.0-1 mssql-tools-14.0.2.0-1