Erreur driver PDO

Eléphanteau du PHP | 20 Messages

24 mars 2012, 21:54

Bonsoir,

Cela fait 1 mois que je suis bloqué sur cette erreur (dizaines de recherches web...) et cela commence réellement à m’embêter.
J'ai crée un système de login BDD en PHP et lorsque j'essayais de me conncter, j'avais à chaque fois mon message "Bad credentials".
J'ai activé le mode "E_ALL" du php.ini pour voir les erreurs et je me suis retrouvé devant cet erreur :


Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in C:\wamp\www\MyProject\classes\managers\pdo\AbstractPdoManager.class.php:17 Stack trace: #0 C:\wamp\www\MyProject\classes\managers\pdo\AbstractPdoManager.class.php(17): PDO->__construct('mysql:host=loca...', 'root', '') #1 C:\wamp\www\MyProject\classes\managers\ManagerFactory.class.php(13): AbstractPdoManager->__construct() #2 C:\wamp\www\MyProject\index.php(11): ManagerFactory::getMemberManager() #3 {main} thrown in C:\wamp\www\MyProject\classes\managers\pdo\AbstractPdoManager.class.php on line 17


J'ai activer, désactivé, réactiver les extensions qu'il faut (mysql, mysqli, pdo ...), je viens de désinstaller puis réinstaller wamp mais aucun effet... J'ai même crée un utilisateur spécial ayant accès seulement à cette base en l'utilisant mais aucun effet...

Merci de m'aider au plus vite, j'étais motivé pour faire un bon projet en php et cela m'a freiné...

ViPHP
xTG
ViPHP | 7331 Messages

24 mars 2012, 22:02

Qu'est ce que cela donne avec les fonctions mysql_xxx et mysqli_xxx ?

Edit : exact moogli, ce ne sont absolument pas les même drivers qui sont utilisés j'avais oublié...
Modifié en dernier par xTG le 24 mars 2012, 22:27, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 mars 2012, 22:11

peux tu nous montrer la partie du php.ini correspondant aux extensions chargées ?

il faut charger php_pdo_mysql.dll en plus de php_pdo !


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 20 Messages

24 mars 2012, 22:44

La partie qui nous intéresse dans le php.ini :

;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
extension=php_mbstring.dll
;extension=php_exif.dll
;extension=php_fileinfo.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_ming.dll
;extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll
;extension=php_oci8_11g.dll
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_phar.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_zip.dll

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 mars 2012, 00:16

ça a l'air bon :/

et y a quoi la : AbstractPdoManager.class.php on line 17 ?


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 20 Messages

25 mars 2012, 00:53

Voici mon abstract pdo manager :
<?php

abstract class AbstractPdoManager {
	
	const DRIVER = 'mysql';
	const HOST = 'localhost';
	const PORT = '3306';
	const DATABASE_NAME = 'database';
	const USER = 'root';
	const PASSWORD = '';
	
	protected $pdo;
	
	public function __construct() {
		$dsn = self::DRIVER.':host='.self::HOST.';port='.self::PORT.';dbname='.self::DATABASE_NAME;
		$this->pdo = new PDO($dsn, self::USER, self::PASSWORD); // la fameuse ligne 17
	}
        

}

?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 mars 2012, 03:59

pas de soucis coté code (test simple avec)
<?php

abstract class AbstractPdoManager {
       
        const DRIVER = 'mysql';
        const HOST = 'localhost';
        const PORT = '3306';
        const DATABASE_NAME = 'test';
        const USER = 'root';
        const PASSWORD = '';
       
        protected $pdo;
       
        public function __construct() {
                $dsn = self::DRIVER.':host='.self::HOST.';port='.self::PORT.';dbname='.self::DATABASE_NAME;
                $this->pdo = new PDO($dsn, self::USER, self::PASSWORD); // la fameuse ligne 17
        }
}


class test extends AbstractPdoManager{
	
	public function __construct(){
		parent::__construct();
	}
	public function  test(){
		$res = $this->pdo->query('select version() as v;');
		$data = $res->fetch(PDO::FETCH_OBJ);
		var_dump($data);
		$res->closeCursor();
	}
}

try {
$a = new test();
$a->test();
}
catch (Exception $e){
	echo $e->getMessage();
}
A tu redémarré apache ?

après je sèche un peux voir si tu n'a pas des erreurs dans le log d'apache et si tu a bien les lib au bon endroit.

@+
Il en faut peu pour être heureux ......

ViPHP
ViPHP | 2287 Messages

25 mars 2012, 13:23

A tu redémarré apache ?

après je sèche un peux voir si tu n'a pas des erreurs dans le log d'apache et si tu a bien les lib au bon endroit.

@+
En complément du conseil de moogli (redémarrer apache), si ça ne change rien tu peux t'assurer du bon chargement de ton php.ini et de ses directives avec :

http://fr2.php.net/manual/fr/function.p ... d-file.php
http://fr2.php.net/manual/fr/function.p ... -files.php
et
http://fr2.php.net/manual/fr/function.e ... loaded.php
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphanteau du PHP | 20 Messages

25 mars 2012, 14:43

J'ai bien redémarré Apache.
Voici les logs apache_error :

[Sun Mar 25 14:27:49 2012] [notice] Apache/2.2.21 (Win64) PHP/5.3.10 configured -- resuming normal operations
[Sun Mar 25 14:27:49 2012] [notice] Server built: Sep 24 2011 19:57:51
[Sun Mar 25 14:27:49 2012] [notice] Parent: Created child process 5852
[Sun Mar 25 14:27:49 2012] [notice] Child 5852: Child process is running
[Sun Mar 25 14:27:49 2012] [notice] Child 5852: Acquired the start mutex.
[Sun Mar 25 14:27:49 2012] [notice] Child 5852: Starting 64 worker threads.
[Sun Mar 25 14:27:49 2012] [notice] Child 5852: Starting thread to listen on port 80.
[Sun Mar 25 14:27:49 2012] [notice] Child 5852: Starting thread to listen on port 80.
[Sun Mar 25 14:37:39 2012] [error] [client 127.0.0.1] File does not exist: C:/wamp/www/favicon.ico
[Sun Mar 25 14:37:46 2012] [error] [client 127.0.0.1] File does not exist: C:/wamp/www/favicon.ico

------------------------------

Rien d'anormal...
Le php.ini est bel et bien chargé (php_ini_loaded_file())....

ViPHP
ViPHP | 2287 Messages

25 mars 2012, 20:33

J'ai bien redémarré Apache.
Voici les logs apache_error :

[Sun Mar 25 14:27:49 2012] [notice] Apache/2.2.21 (Win64) PHP/5.3.10 configured -- resuming normal operations
PHP et toutes ses extensions sont-ils tous bien compilés en 64bits ?
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphanteau du PHP | 20 Messages

26 mars 2012, 11:44

Comment vérifier cela ?

ViPHP
ViPHP | 5462 Messages

26 mars 2012, 11:52

prend un version officiel de PHP, de tout façon sous Win le PHp en 64bit ne sert a rien

Eléphanteau du PHP | 20 Messages

26 mars 2012, 17:10

Ça a un rapport avec mon problème ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 mars 2012, 21:56

Possible s'il ne trouve pas les libs (ou que tu essai de lui filer les libs 32b à une version 64b).

@+
Il en faut peu pour être heureux ......

ViPHP
ViPHP | 5462 Messages

26 mars 2012, 23:27

Ça a un rapport avec mon problème ?
oui si t'avais une vrai version tu n'auras pas de problème