2011-02-04 2 views
2

J'essaye d'installer une application PHP qui a codé un autre type que je ne peux pas contacter et qui a utilisé PDO. Je rencontre beaucoup de problèmes pour exécuter ce code. En someareas, MySQL se connecte bien parce que PDO n'est pas utilisé (cela montre que le nom d'utilisateur et mot de passe sont à droite), mais dans d'autres, il jette cette exception:Erreur fatale: PDOException SQLSTATE [28000] [1045] Accès refusé

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access denied for user 'www-data'@'localhost' (using password: NO)' in /var/www/x/include/SPDO.php:14 Stack trace: #0 /var/www/x/include/SPDO.php(14): PDO->_construct('mysql:host=;dbn...', NULL, NULL) #1 /var/www/x/include/SPDO.php(22): SPDO->_construct() #2 /var/www/x/include/class_Projecte.php(55): SPDO::singleton() #3 /var/www/x/dades_proj_edit.php(116): Project->__construct() #4 {main} thrown in /var/www/x/include/SPDO.php on line 14

Je ne comprends pas pourquoi on essaie de regarder l'utilisateur www-data. J'ai regardé dans Google et j'ai trouvé beaucoup de problèmes avec cette erreur mais de CMS comme Magento et rien qui puisse m'aider.

  • version de PHP PHP 5.3.3-7
  • PDO pilote pour MySQL 5.1.49
  • Apache version: Apache/2.2.16 (QA)
  • modules Apache: core mod_log_config mod_logio prefork http_core mod_so mod_alias mod_auth_basic mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_deflate mod_dir mod_env mod_mime mod_negotiation mod_php5 mod_reqtimeout mod_setenvif mod_status

Merci d'avance!

mise à jour:

Ce sont les deux fichiers utilisés pour se connecter à PDO:

Répondre

7

www-data est l'utilisateur sous lequel vos scripts PHP sont en cours d'exécution, je pense qu'il est ce que PDO utilisera par défaut si aucune Uername est fourni pour la connexion à votre base de données.

Il semble que le code que vous avez reçu ne trouve pas le nom d'utilisateur et le mot de passe de la méthode que vous utilisez ou le développeur n'a pas fourni un nom d'utilisateur et un mot de passe correctement.

Une correction temporaire serait d'éditer le fichier "/var/www/x/include/SPDO.php". Sur la ligne 14, vous trouverez un appel au constructeur PDO. Changez le deuxième paramètre à votre nom d'utilisateur et le troisième paramètre à votre mot de passe.

2

/var /www/x/include/SPDO.php(14): PDO -> _ construct ('mysql: host =; dbn ...', NULL, null) Les deuxième et troisième arguments doivent être nom d'utilisateur et mot de passe pour DB au lieu de NULL

J'ai vérifié vos fichiers et j'ai trouvé que l'instanciation de config est manquante (ou non incluse) - nom d'utilisateur, mot de passe, hôte, etc.

Vous devez utiliser le code suivant avant instanciation d'objet AOP:

$config = Config::singleton(); 
$config->set('dbhost', 'your_hostname'); //probably localhost 
$config->set('dbname', 'your_database_name'); 
$config->set('dbuser', 'db_username'); 
$config->set('dbpass', 'db_user_password'); 
+0

hey, merci pour votre réponse. J'ai essayé de le forcer et ça échoue quand même. J'ai mis à jour avec 2 fichiers pastebin pour montrer comment ils chargent les variables de configuration, etc. – udexter

Questions connexes