| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Sensei User
Anmeldungsdatum: 10.03.2009 Beiträge: 17
|
10.03.2009 18:13 Warning/Fehler bei Datenbankverbindung |
|
|
Hi,
ich möchte ein Projekt erstellen wobei ich sehr gerne auf die Datenbankverbindung mittels PEAR - MDB2 zurückgreiffen möchte. Nachdem ich die pear dateien auf dem Server in den Ordner /php installiert habe und in meiner datei registrieren.php den aufruf include 'PEAR/MDB2.php'; mache, kommt bei mir immer eine Fehler-Meldung (siehe [url]http://umzugsboerse.com/wese_logistik/registrieren.php [/url]). Die Datei registrieren.php liegt im Verzeichnis /wese_logistik auf dem gleichen Server. Ich nutze PHP v.5 mit einer MySQL DB, falls das für euch relevant ist.
Vielen, vielen Dank für eure Hilfe! |
|
| Nach oben |
|
 |
mark Power User
Anmeldungsdatum: 31.05.2004 Beiträge: 970
|
10.03.2009 21:38 |
|
|
| Du musst nur MDB2.php einbinden, ohne eine Pfadangabe davor (so wie es auch in den Beispielen steht). Voraussetzung ist natürlich, dass du PEAR und MDB2 sowieso das passende MDB2_Driver_X-Paket richtig installiert hast. Laut der Fehlermeldung müssten die Pakete in /usr/local/lib/php/ installiert sein, damit es funktioniert. Alternativ kannst du den include_path auf das richtige Verzeichnis zeigen lassen. |
|
| Nach oben |
|
 |
Sensei User
Anmeldungsdatum: 10.03.2009 Beiträge: 17
|
10.03.2009 21:58 |
|
|
OK, das hatte ich auch schon versucht, nur MDB2.php einzubinden, hab ich jetzt gemacht, dann kommt foglende Fehlermeldung: Verbindungsfehler!MDB2 Error: not found (siehe auch zuvor gepostete URL).
In diesem webbasierten PEAR Package Manager wird mir unter Configuration folgender Pfad angezeigt: /usr/www/users/umzugsb/php/ - meinst du das bzw. ist das korrekt? Alternativ könntest du mir vielleicht sagen, wie ich diesen include_path Befehl setzen muss und worauf? Wäre echt super von dir!
Vielen, vielen Dank!!! |
|
| Nach oben |
|
 |
mark Power User
Anmeldungsdatum: 31.05.2004 Beiträge: 970
|
10.03.2009 22:46 |
|
|
Füg mal folgende Zeile am Anfang deines Skripts ein:
| Code: |
set_include_path('.:/usr/www/users/umzugsb/php/');
|
|
|
| Nach oben |
|
 |
Sensei User
Anmeldungsdatum: 10.03.2009 Beiträge: 17
|
11.03.2009 10:51 |
|
|
OK, ich habe die Zeile hinzugefügt, aber es hat sich leider nichts getan, die gleiche Fehlermeldung existiert weiterhin. Hier mal der Beginn des PHP-Codes meines Skripts, falls er dir weiterhilft:
| Code: | <?php
set_include_path('.:/usr/www/users/umzugsb/php/');
include 'MDB2.php';
$dsn = 'mysql://[i]username[/i]:[i]passwort[/i]@localhost/[i]datenbank[/i]';
$db = MDB2::connect($dsn);
if (PEAR::isError($db))
die ("Verbindungsfehler!".$db->getMessage());
... |
Die Verbindung unter $dsn ist doch korrekt, oder?
Probehalber habe ich auch mal versucht, die Verbindung ohne MDB2 (was ich eigentlich nicht möchte) herzustellen, mit dem mysql_connect Statement. Dann kommt folgende Fehlermeldung:
Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /usr/www/users/umzugsb/wese_logistik/registrieren.php on line 13
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /usr/www/users/umzugsb/wese_logistik/registrieren.php on line 14
Fatal error: Call to a member function prepare() on a non-object in /usr/www/users/umzugsb/wese_logistik/registrieren.php on line 18
Vielleicht hängt das ja irgendwie zusammen bzw. sagt dir was?!
Ich weiß echt nicht mehr, was ich noch machen soll - das kann doch nicht so übelst kompliziert sein.
Vielen Dank für deine Hilfe! |
|
| Nach oben |
|
 |
Berdir Power User
Anmeldungsdatum: 22.09.2005 Beiträge: 1347
|
11.03.2009 11:49 |
|
|
a) Bei MDB2 beim Entwickeln auch immer getDebugMessage() ausgeben
b) Ich bin mir zu 90% sicher, das du vergessen hast, das MDB2_Driver_mysql paket zu installieren. |
|
| Nach oben |
|
 |
Sensei User
Anmeldungsdatum: 10.03.2009 Beiträge: 17
|
11.03.2009 13:16 |
|
|
ok, habe deine zwei möglichkeiten versucht:
a) wenn ich den befehl in das skript einfüge bekomme ich die fehlermeldung:
Fatal error: Call to undefined method MDB2_Error::getDebugMessage() in /usr/www/users/umzugsb/wese_logistik/registrieren.php on line 18
b) Das Package ist bereits installiert. Hier ein Auszug aus dem PEAR Webbased Package Manager:
Installed packages, channel pear.php.net:
pear.php.net Archive_Tar 1.3.2 (stable) Tar file management class
pear.php.net Console_Getopt 1.2.3 (stable) Command-line option parser
pear.php.net HTML_Template_IT 1.2.1 (stable) Integrated Templates
pear.php.net MDB2 2.4.1 (stable) uninstall database abstraction layer
pear.php.net MDB2_Driver_mysql 1.4.1 (stable) uninstall mysql MDB2 driver
pear.php.net PEAR 1.7.2 (stable) PEAR Base System
pear.php.net PEAR_Frontend_Web 0.7.3 (beta) Webbased PEAR Package Manager
pear.php.net Structures_Graph 1.0.2 (stable) Graph datastructure manipulation library
Muss man evtl. in dem Package Manager irgendwo noch eine besondere Pfadangabe ändern oder ähnliches?
Danke!!! |
|
| Nach oben |
|
 |
mark Power User
Anmeldungsdatum: 31.05.2004 Beiträge: 970
|
11.03.2009 13:22 |
|
|
| Die Methode heißt getDebugInfo() statt getDebugMessage(). |
|
| Nach oben |
|
 |
Sensei User
Anmeldungsdatum: 10.03.2009 Beiträge: 17
|
11.03.2009 13:33 |
|
|
OK, vielen Dank!
Nun habe ich folgende Meldung:
Verbindungsfehler!MDB2 Error: not found unable to find package 'MDB2_Driver_mysql' file 'MDB2/Driver/mysql.php'
Die Datei mysql.php liegt jedoch in dem angegebenen Verzeichnis und das Package ist auch installiert, wie ich ja zuvor gepostet habe. Muss ich hier noch eine Pfadangabe ändern? |
|
| Nach oben |
|
 |
mark Power User
Anmeldungsdatum: 31.05.2004 Beiträge: 970
|
11.03.2009 13:44 |
|
|
| Der include_path muss stimmen, sonst findet MDB2 "seine" Dateien nicht. Wie man ihn ändert, hatte ich ja schon geschrieben. Ob das der richtige Pfad ist, kannst aber nur du beurteilen. (PEAR.php und MDB2.php müssen in diesem Verzeichnis liegen, ebenso das Verzeichnis MDB2.) |
|
| Nach oben |
|
 |
Sensei User
Anmeldungsdatum: 10.03.2009 Beiträge: 17
|
11.03.2009 14:36 |
|
|
so, jetzt funktioniert es.
Das Problem war noch folgendes:
- in dem include_path hat das letzte Verzeichnis gefehlt, so ist es korrekt: set_include_path('.:/usr/www/users/umzugsb/php/PEAR');
- im dsn habe ich bei dem host noch :3306 hinzugefügt (also @localhost:3306)
und siehe da, es funktioniert.
Vielen, vielen Dank für eure Hilfen!!! |
|
| Nach oben |
|
 |
|
|