2013-01-18 19 views
5

Ich versuche, mit PHP5 eine Verbindung zu einer Sybase-Datenbank herzustellen. Ich glaube, ich habe erfolgreich PHP mit PDO_DBLIB, wie phpinfo() Listen dblib unter PDO-Treiber und freetds als pdo_dblib Geschmack kompiliert.Verbindung mit Sybase über PHP

Allerdings, wenn ich versuchen, eine Verbindung zu testen, habe ich einen Fehler beim Lesen erhalten:

'PDOException' with message 'could not find driver'

Ich versuche, mit diesem Code auf einem Server in meinem LAN zu verbinden:

$dbh = new PDO("sybase:host=192.168.1.xxx;dbname=[database-name]", '[user]', '[pass]'); 

Irgendwelche Vorschläge würden sehr geschätzt werden!

+0

Es scheint, Sie haben keine Treiber installiert und aktiviert in der php.ini Sie können diesen experimentellen Treiber versuchen: http: // php .net/manual/de/ref.pdo-dblib.php – shark555

Antwort

0

PDO würde nicht funktionieren, oder zumindest gibt es keine PDO Sybase-Unterstützung für PHP. Unter Windows können Sie ODBC und PDO_SQLSRV oder PDO_ODBC verwenden, es klingt seltsam, aber es sollte funktionieren.

Zweite Option und ich würde es empfehlen, direkt zu Sybase (sqlanywhere) zu verbinden, aber Sie müssen SQL Anywhere PHP Module

+0

Zdenek Machek, danke für den Link zum SQL Anywhere PHP Modul. – zwiebelspaetzle

+0

Ich versuche, das SQL Anywhere PHP-Modul zu verwenden, aber wenn ich httpd starte, erhalte ich folgende Fehlermeldung: "Die SQLAnywhere-Client-Bibliotheken konnten nicht geladen werden. Bitte stellen Sie sicher, dass libdbcapi_r.so in Ihrer Umgebungsvariablen LD_LIBRARY_PATH gefunden wird." Ich habe "SetEnv LD_LIBRARY_PATH/opt/sqlanywhere12/lib64" zu meiner httpd.conf Datei hinzugefügt. Phpinfo zeigt jedoch weiterhin die Apache-Umgebung LD_LIBRARY_PATH als/usr/local/apache2/lib an. Irgendwelche Vorschläge? – zwiebelspaetzle

+0

Ja, auf Ihrem Rechner muss Sybase SqlAnywhere oder mindestens SqlAnywhere Client installiert sein und diese Bibliothek muss zum Systempfad hinzugefügt werden, siehe "echo $ PATH" –

0

installieren Falls Sie Ubuntu verwenden Sie den LD_LIBRARY_PATH innerhalb envvars setzen können, und es scheint zu lesen. .. immer noch versuchen, einen Weg zu finden, es auf RHEL-basierten Systemen zu halten ... Windows Ich bin mir nicht sicher, ob ich hoffe, Sie könnten eine systemweite Variable unter meinem Computer einstellen -> Eigenschaften -> erweiterte Optionen usw.

Wenn RHEL-basierte Systeme verwendet werden, kann es besser sein, den folgenden Pfad zu verwenden: LD_LIBRARY_PATH =/Pfad/in/Library/in das httpd Restart-Skript exportieren (überprüfen Sie, ob dies der Fall ist lädt/etc/sysconfig/httpd und wenn ja, füge dort die Zeile ein - starte Apache neu und du solltest etwas Aktivität sehen.

0

sollten Sie dblib anstelle von sybase, wie folgt aus:

$dbh = new PDO("dblib:host=192.168.1.xxx;dbname=[database-name]", '[user]', '[pass]');