P
peterw
Grünschnabel
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.
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.