SQL Select-Befehle mit PHP zu MS SQL Server via unixODBC und freeTDS

Dieses Thema im Forum "SQL und Datenbanken" wurde erstellt von peterw, 08.04.2009.

  1. peterw

    peterw Grünschnabel

    Dabei seit:
    08.04.2009
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo zusammen.
    Ich komme nicht mehr weiter.
    Hat jemand eine Idee?

    Aufgabe:
    PHP auf openSUSE 10.2 x86_64 soll Verbindung zu MS SQL Server 2000 aufnehmen.

    Die Installation:
    openSUSE 10.2 x86_64 ist eine Standardinstallation, keine GUI, nur Textmodus.

    Dann openSUSE RPMs:
    apache2 (v2.2.3)
    apache2_mod_php5 (v5.2.0-10)
    gcc (v4.1)

    unixODBC gibts als openSUSE RPM aber libtdsodbc.so fehlt.
    Deswegen selbst kompiliert (v2.2.14).
    ./configure --enable-gui=no
    make
    make install

    Environmentvariable LD_LIBRARY_PATH gesetzt in /etc/profile.local.
    LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib
    export LD_LIBRARY_PATH

    freeTDS selbst kompiliert (v0.82).
    ./configure --with-tdsver=8.0
    make
    make install

    tds.driver Datei mit:
    [FreeTDS]
    Description = v0.82 with protocol v8.0
    Driver = /usr/local/lib/libtdsodbc.so

    Treiber installieren:
    odbcinst -i -d -f tds.driver

    tds.datasource-Datei mit:
    [MSSQLServer]
    Driver = FreeTDS
    Description = Datenbank
    Trace = No
    Server = IP des SQL Servers
    Port = 1433
    Database = Datenbank

    Installieren:
    odbcinst -i -s -f tds.datasource

    odbcinst -j liefert:
    unixODBC 2.2.14
    DRIVERS............: /usr/local/etc/odbcinst.ini
    SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
    FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
    USER DATA SOURCES..: /root/.odbc.ini
    SQLULEN Size.......: 8
    SQLLEN Size........: 8
    SQLSETPOSIROW Size.: 8

    Verbindung zum SQL-Server auf der Konsole:
    isql -v MSSQLServer user password
    +---------------------------------------+
    | Connected! |
    | |
    | sql-statement |
    | help [tablename] |
    | quit |
    | |
    +---------------------------------------+

    select-Befehle hier sind ok.

    Auch: Die Logs von unixODBC und freeTDS zeigen, dass alle Daten ankommen.

    Bis hierher scheint es also ok zu sein.

    Nun PHP.
    Das php5-odbc-RPM von openSUSE installiert odbc.so.
    odbc.so als Extension in php.ini eingetragen.
    Apache restart: PHP-Skript bekommt keine Verbindung zum SQL-Server.

    Also odbc.so neu kompiliert.
    php5-devel und autoconf installiert.
    openSUSE-RPM php.src (v5.2.0-10) installiert.
    Bekomme php5-5.2.0.tar.bz2.
    Auspacken.
    Nach Unterordner ext/odbc.
    phpize
    ./configure --with-unixODBC=shared,/usr/local
    make

    Im Unterordner modules ist nun odbc.so.
    Nach /usr/lib64/php5/extensions kopiert.

    Eintrag in der /etc/phph5/apache2/php.ini:
    extension = odbc.so
    apache restart.

    2 PHP-Skripte geschrieben:
    Skript1: select auf Tabelle mit 1 Datensatz: Liefert nichts.
    Skript2: select auf Tabelle mit 10389 Datensätze: Liefert 10283 Datensätze.
    D.h. die Ausgabe ist fehlerhaft.

    Das gleiche Vorgehen auf openSUSE x86_32:
    Skript1: select auf Tabelle mit 1 Datensatz: Liefert 1 Datensatz.
    Skript2: select auf Tabelle mit 10389 Datensätze: Liefert 10389 Datensätze.
    D.h. die Ausgabe ist korrekt.

    isql auf der Konsole liefert immer noch korrekte Resultate.
    Die Logs von unixODBC und freeTDS zeigen, dass alle Daten ankommen.

    Fazit:
    32 Bit scheint ok zu sein.
    64 Bit scheint bis zu unixODBC und freeTDS ok zu sein. PHP ist nicht mehr ok.
    Das gleiche Verhalten bei PHP 5.2.6 auf openSUSE 11.1.
    Scheint also auch nicht mit einer neueren PHP-Version zusammenzuhängen.

    Hat jemand eine Idee?
    Vielen Dank.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 flugopa, 08.04.2009
    flugopa

    flugopa Der lernwillige

    Dabei seit:
    27.05.2006
    Beiträge:
    739
    Zustimmungen:
    0
    Ort:
    München
    Meine Idee:
    lösche die Zeile "Port = 1433", (MySQL-Default-Port 3306 und Oracle 1433)
    Dies ist nur eine Idee!
     
  4. #3 peterw, 09.04.2009
    Zuletzt bearbeitet: 10.04.2009
    peterw

    peterw Grünschnabel

    Dabei seit:
    08.04.2009
    Beiträge:
    2
    Zustimmungen:
    0
    Danke flugopa für die Antwort.

    Der Default Port für den MS SQL Server 2000 ist 1433.
    Mit 32 Bit openSUSE 10.2 bekomme ich ja mit dem Port 1433 eine Verbindung mit korrekten Resultaten.
    Mit 64 Bit openSUSE 10.2 bekomme ich auf diesem Port eine Verbindung, allerdings mit fehlerhaften Resultaten

    peterw
     
Thema:

SQL Select-Befehle mit PHP zu MS SQL Server via unixODBC und freeTDS

Die Seite wird geladen...

SQL Select-Befehle mit PHP zu MS SQL Server via unixODBC und freeTDS - Ähnliche Themen

  1. CentOS 7: Falsche Metric bei regelbasiertem Routing nach Server-Reboot

    CentOS 7: Falsche Metric bei regelbasiertem Routing nach Server-Reboot: Hallo zusammen Ich möchte unseren existierenden SFTP Server durch einen neuen Server mit CentOS 7 ersetzen. Da der Server einerseits direkt via...
  2. Empfehlung für Server Distribution

    Empfehlung für Server Distribution: Hallo, ich habe hier zu Hause einen kleinen Heimserver, auf welchem ich ein paar Daten für den Zugriff im Haus, einen kleinen Web Service für...
  3. Buch-Weitergabe: Linux-Server mit Debian 6 (Squeeze)

    Buch-Weitergabe: Linux-Server mit Debian 6 (Squeeze): Autor des Buches: Eric Amberg ISBN: 3-8266-5534-0 Praxisumpfang: Backoffice-Server, Root-Server, Linux als Gateway, Server-Security Viele...
  4. Hundertserver sucht Dich: Linux Spezialisten in Berlin.

    Hundertserver sucht Dich: Linux Spezialisten in Berlin.: Hundertserver sucht einen Linuxspezialiten in Berlin Hundertserver über sich: "Hundertserver bietet Unternehmen die Möglichkeit, digitale...
  5. Autehtifizierung gegen Password Server nach Update SAMBA 3.6.6

    Autehtifizierung gegen Password Server nach Update SAMBA 3.6.6: Hi... ich bekomme einfach den "Dreh" nicht an meine Recherche/Suche nach einer Lösung: Ein Samba 3.5.6 (läßt sich leider z.Z. nicht updaten) läuft...