2017-02-07 15 views
9

私は、PDO_SQLSRVとSQLSRV PHP拡張機能を利用できるように、platform.shにMicrosoft ODBCドライバをセットアップしようとしています。 aptやその他のsudoコマンドは制限されています。しかし、ビルド中にLD_LIBRARY_PATHなどの環境変数を設定できます。手動でインストールするMicrosoft ODBCドライバ13

これまで私がこれまでに試したことは次のとおりです。

  1. 私はhttps://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/msodbcsql/をダウンロードし、パッケージからすべてのファイルを抽出しました。
  2. 私は
  3. が試したサーバに抽出されたファイルをコピー:すべての依存関係がある

    更新

    SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver 13 
    for SQL Server to communicate with SQL Server. Access the following 
    URL to download the ODBC Driver 13 for SQL Server for x86: 
    http://go.microsoft.com/fwlink/?LinkId=163712 
    

    export LD_LIBRARY_PATH="($pwd):$LD_LIBRARY_PATH"LD_LIBRARY_PATH="($pwd):$LD_LIBRARY_PATH" /usr/sbin/php-fpm7.0

をそれでも、私は次のエラーを取得します私がLD_LIBRARY_PATH=$(pwd) ldd libmsodbcsql-13.1.so.4.0を実行したときに会った。しかし、LD_LIBRARY_PATH="$(pwd):$LD_LIBRARY_PATH" /usr/sbin/php-fpm7.0で起動すると、上記のエラーが表示されます。

答えて

3

あなたのエクステンションが間違ったライブラリにリンクされていると思います。

つまり、カスタムエクステンションは必要ありません。あなたは自分の.platform.app.yamlにこれを追加することができます。

runtime: 
    extensions: 
     - mssql 

は、より多くの情報のためthis pageを参照してください。

+0

残念ながら、mssqlはPHP> 5.6用に手動でインストールする必要があります。私は7.0を使用しています – TylersSN

2

代わりにMSSQLドライバにFreeTDSを使用してください。理想的にはsudo権限が必要です。ユーザー固有のODBC構成ファイルを使用することは可能ですが、まだ実行されていない場合は基本ソフトウェアをインストールする必要があります。

sudo apt-get install freetds-common freetds-bin unixodbc tdsodbc php5-odbc php5-sybase 

への接続を追加します。/etc/odbc.ini ServerNameは次の条件を満たす必要があります。/etc/odbcinst.ini

[odbc] 
Description  = ODBC driver 
Driver   = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so 
Setup   = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so 

[FreeTDS] 
Description  = FreeTDS 
Driver   = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so 

が最後にあなたのODBCの設定にFreeTDSの接続を追加します。/etc/freetds/freetds.conf

[global] 
text size = 64512 

[my_connection] 
host = SQL_HOSTNAME 
port = SQL PORT - possibly 1433 
tds_version = 7.2 
encryption = required 

は、ODBCドライバのリストにFreeTDSのを追加しますFreeTDSで使用されているものと一致する

[my_connection] 
Driver   = FreeTDS 
Description  = Uses FreeTDS configuration settings defined in /etc/freetds/freetds.conf 
Servername  = my_connection 
TDS_Version  = 7.2 

[Default] 
Driver   = FreeTDS 

これで、PDOをODBCまたはFreeTDSドライバで使用できるようになります。直接

FreeTDSの

$pdo = new PDO('odbc=my_connection', 'username', 'password'); 

経由

$pdo = new PDO($'dblib:host=my_connection', 'username', 'password'); 

またはODBCを使用して、あなたは両方のドライバーがわずかに異なる特性を持っている見つけるので、使用しているクエリに対して最も信頼性の高いものを使用する場合がありますFreeTDSのを使用して

関連する問題