2017-02-07 1 views
9

Ich versuche, den Microsoft ODBC-Treiber auf platform.sh einzurichten, so dass die PHP-Erweiterungen PDO_SQLSRV und SQLSRV für mich verfügbar sind. apt und andere sudo-Befehle sind begrenzt. Während des Builds kann ich jedoch Umgebungsvariablen wie LD_LIBRARY_PATH setzen.Wie auf manuelle Installation verweisen Microsoft ODBC-Treiber 13

Hier ist was ich bisher versucht habe.

  1. Ich habe https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/msodbcsql/ heruntergeladen und extrahiert alle Dateien aus dem Paket.
  2. kopierte ich die entpackten Dateien auf den Server
  3. Versuchte: export LD_LIBRARY_PATH="($pwd):$LD_LIBRARY_PATH" und LD_LIBRARY_PATH="($pwd):$LD_LIBRARY_PATH" /usr/sbin/php-fpm7.0

Trotzdem bekomme ich folgende Fehlermeldung:

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 

aktualisieren

Alle Abhängigkeiten sind erfüllt, wenn ich LD_LIBRARY_PATH=$(pwd) ldd libmsodbcsql-13.1.so.4.0 ausführen. Wenn ich jedoch mit LD_LIBRARY_PATH="$(pwd):$LD_LIBRARY_PATH" /usr/sbin/php-fpm7.0 starte, sehe ich immer noch den oben gezeigten Fehler.

Antwort

3

Meine Vermutung ist, dass Ihre Erweiterung mit den falschen Bibliotheken verknüpft ist.

Das heißt, Sie brauchen keine benutzerdefinierte Erweiterung dafür. Sie können nur diese zu Ihrem .platform.app.yaml hinzufügen:

runtime: 
    extensions: 
     - mssql 

Siehe this page für weitere Informationen.

+0

Leider muss mssql für PHP> 5.6 manuell installiert werden. Ich benutze 7.0 – TylersSN

2

Verwenden Sie stattdessen FreeTDS für Ihren MSSQL-Treiber. Sie werden idealerweise Sudo-Privilegien benötigen. Obwohl es möglich ist, benutzerspezifische ODBC-Konfigurationsdateien zu verwenden, müssen Sie die Basissoftware immer noch installieren, wenn dies nicht bereits geschehen ist.

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

hinzufügen eine Verbindung zu: /etc/freetds/freetds.conf

[global] 
text size = 64512 

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

hinzufügen FreeTDS zu Ihrer ODBC-Treiber-Liste: /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 

schließlich die FreeTDS Verbindung zu Ihrem ODBC Config hinzu: /etc/odbc.ini Der Servername muss passen Sie die in 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 

Jetzt können Sie PDO mit den ODBC- oder FreeTDS-Treibern verwenden.

Mit FreeTDS direkt

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

Oder mit ODBC über FreeTDS

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

Sie könnten beide Fahrer leicht unterschiedliche Eigenschaften, so finden, die man verwenden, die für die Abfragen zuverlässigste Sie verwenden.

Verwandte Themen