2010-09-16 13 views
1

J'ai un peu de mal à me connecter à une base de données avec PEAR sur mon compte d'hébergement GoDaddy. Je suis capable de me connecter à ma base de données avec la norme mysql_connect.Impossible de se connecter à la base de données avec PEAR php

J'ai téléchargé le package DB de: http://pear.php.net/package/DB

Tout d'abord, j'ai inclus le paquet (qui fonctionne):

include 'libs/pear/db/DB.php'; 

Puis-je connecter avec:

$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"); 

Cependant, ça ne marche pas. En fait si je mets un die entre $ conn = DB :: connect ($ dsn); et si (DB :: isError ($ conn)), il n'apparaît pas. C'est comme si le script se terminait sur DB :: connect.

Ive a essayé tourner des erreurs avec:

ini_set('display_errors',1); 
error_reporting(E_ALL|E_STRICT); 

Et je reçois:

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 

qui ne sont pas des erreurs fatales il shoudldn't provoquent le script de mourir ??

Je n'arrive pas à accéder aux journaux d'erreurs car l'interface Web de GoDaddys me renvoie simplement à une page non trouvée.

Est-ce que je manque des paquets? S'il vous plaît donnez votre avis! Merci.

Répondre

1

PEAR :: DB a été remplacé par MDB2 et n'a pas été mis à jour depuis 2007. Un bug report sur les messages d'erreur que vous avez rencontrés a été classé, mais n'a jamais été résolu.

Vous pouvez essayer d'utiliser PDO à la place.

1

DB est obsolète, et va lancer quelques avertissements en mode strict sur une installation PHP standard moderne. D'ailleurs, il en sera de même pour son successeur, MDB2. Les avertissements ne sont pas fatals, ils signalent simplement que la méthode ":: connect()" est mal configurée.

Cela fonctionnera toujours, ignorez simplement les avertissements. Mais envisagez de passer à quelque chose de plus moderne comme PDO.

0

J'ai aussi eu ce problème. Qu'est-ce qui se passe est que PEAR DB est conçu pour fonctionner avec la syntaxe de la classe PHP 4.X, alors que GoDaddy a évidemment PHP 5.X installé - et cela signifie que vous obtenez ces erreurs. Bien qu'ils ne soient pas étiquetés comme «mortels», ils se comportent en quelque sorte comme des erreurs fatales - les méthodes ne sont tout simplement pas appelées.

Si vous avez accès à la source PEAR, vous n'avez pas d'autre choix que de parcourir chaque fonction qui apparaît sur les journaux, une par une, et d'ajouter le mot-clé "statique" avant la déclaration de fonction. C'est une douleur, mais c'est la seule option. Je viens de le faire aujourd'hui avec succès - J'ai une très ancienne application à maintenir qui nécessite encore PEAR DB pour fonctionner, et les dernières mises à jour automatiques de PHP (actuellement PHP 5.3.X) ont brisé la connectivité de la base de données. Portage de l'ensemble de l'application pour utiliser MDB2 (le choix recommandé) n'était pas une option, donc l'ajout d'une douzaine ou de deux mots clés "statiques" a fait l'affaire pour moi.

Mais si vous démarrez un projet à partir de rien et que vous n'avez aucun code à gérer, je vous recommande vivement d'abandonner DB et de passer à MDB2 à la place.

1

Désactiver error_reporting = E_ALL | E_STRICT dans votre fichier ini php