Keine Verbindung zur Datenbank mit php-PEAR
Ich habe ein wenig Probleme mit der Verbindung zu einer Datenbank mit BIRNE auf meinem GoDaddy hosting-account.
Ich bin in der Lage, eine Verbindung zu meiner Datenbank mit dem standard mysql_connect.
Heruntergeladen habe ich das DB-Paket aus:
http://pear.php.net/package/DB
Erstens ich habe das Paket (welches funktioniert):
include 'libs/pear/db/DB.php';
Dann Verbinde ich mit:
$dsn = array(
'phptype' => "mysql",
'hostspec' => $hostname,
'database' => $dbname,
'username' => $username,
'password' => $password
);
$conn = DB::connect($dsn);
if (DB::isError ($conn))
die ("Cannot connect: " . $conn->getMessage () . "\n");
Aber es funktioniert nicht. In der Tat, wenn ich einen Würfel zwischen $conn = DB::connect($dsn); und if (DB::isError ($conn)), es nicht zu zeigen. Wie Ihr das Skript endet bei der DB::connect.
Ive versucht, drehen Fehler auf mit:
ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);
Und ich bekomme:
Strict Standards: Non-static method DB::connect() should not be called statically in /path/t.php on line 27
Strict Standards: Non-static method DB::parseDSN() should not be called statically in /path/DB.php on line 520
Welche nicht schwerwiegender Fehler, so dass es shoudldn nicht dazu führen, dass das Skript zu sterben??
Kann ich nicht bekommen, um die Fehler-logs als GoDaddys web-interface nur schickt mich zu einer nicht gefunden Seite.
Fehlen mir Pakete? Bitte informieren Sie! Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
PEAR::DB wurde abgelöst durch MDB2, und wurde nicht aktualisiert, seit 2007. Ein bug-report über die Fehlermeldungen, denen Sie begegnen, wurde eingereicht, aber nie gelöst.
Möchten Sie vielleicht zu versuchen, mit PDO statt.
DB ist veraltet und wirft durchaus ein paar Warnung, wenn im strikten Modus auf einem modernen standard-PHP zu installieren. Für diese Angelegenheit, so wird sein Nachfolger, MDB2. Die Warnungen sind nicht tödlich, Sie sind nur darauf hin, dass die ::connect () "- Methode" eingerichtet ist falsch.
Es wird immer noch funktionieren, einfach die Warnungen ignorieren. Aber ein Upgrade auf etwas moderneres wie die PDO.
deaktivieren error_reporting = E_ALL | E_STRICT in php-ini-Datei
Hatte ich dieses problem auch. Was passiert, ist, dass die PEAR-DB ist zugeschnitten auf die Arbeit mit PHP 4.X-Klasse-syntax, während GoDaddy offensichtlich hat PHP 5.X installiert — und das bedeutet, dass man diese Fehler. Während Sie nicht mit der Bezeichnung als "fatal" irgendwie benehmen Sie sich als fataler Fehler — die Methoden sind einfach nicht genannt.
Wenn Sie Zugriff auf die PEAR-Quelle, Sie haben keine andere Wahl aber zu gehen, durch jede Funktion, die angezeigt wird auf die Protokolle, eins nach dem anderen, und fügen Sie das Schlüsselwort "statische" vor der Deklaration der Funktion. Es ist ein Schmerz, aber es ist die einzige option. Ich habe nur getan, dass heute mit Erfolg — ich habe eine sehr alte Anwendung, zu behaupten, dass der Bedarf noch PEAR-DB zu betreiben, und die neuesten auto-upgrades von PHP (aktuell PHP 5.3.X) gebrochen hatte, die Datenbank-Konnektivität. Die Portierung der gesamten Anwendung zu verwenden, MDB2 (empfohlene Wahl) war nicht eine option, so dass das hinzufügen ein Dutzend oder zwei "statische" keywords hat den trick für mich.
Aber wenn Sie beginnen, ein Projekt von Grund auf neu, und haben keinen legacy code zu erhalten, empfehle ich auf jeden Fall, dass Sie aufgeben DB bewegen und auf MDB2 statt.