Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [Résolu] Erreur à la création d'un DAO MySQL

Posted by sylozof on 01/07/2008 12:00

Bonjour à tous

Je suis en train de suivre le tutoriel principal de Jelix, et là je suis à l'étape de l'utilisation du DAO. http://jelix.org/articles/tutoriels/prin(..)

Le souci, c'est au moment de créer le DAO. Lorsque je lance la commande

 > php.exe jelix.php createdao news news news

j'obtiens l'erreur suivante :

Fatal error: Uncaught exception 'jException' with message 'jDb : l'extension mysql n'est pas installée dans php pour le driver jDb configuré' in C:\(...)\jelix\lib\jelix\plugins\db\mysql\mysql.dbconnection.php:30
(puis vient le stack trace)

Un rapide coup d'oeil dans le fichier mysql.dbconnection.php à la ligne 30 indique qu'un test est fait sur l'existence de la fonction mysql_connect

 29  if(!function_exists('mysql_connect')){
 30     throw new jException('jelix~db.error.nofunction','mysql');

Donc visiblement, dans ce contexte, mysql_connect n'existe pas.

Pourtant j'ai fait un simple fichier php de test comme ceci

 <?php
 
 if (function_exists('mysql_connect'))
 {
 	echo 'mysql_connect existe<br>';
 	$link = mysql_connect  ('localhost', 'mon_user', 'mon_password');
 
 	if ($link) {
 		$connect = mysql_select_db('jelix', $link);
 	
 		if ($connect) echo "connexion et sélection réussies";
 	}
 }
 else
 	echo 'mysql_connect n\'existe pas';
 
 ?>

et j'obtiens comme affichage

mysql_connect existe
connexion et sélection réussies

Donc j'ai bien l'extension MySQL installée et j'ai bien mes fonctions qui sont accessibles. Pourtant Jelix lance une erreur à la création d'un DAO, comme indiqué ci-dessus.

J'utilise EasyPHP 2, sous Windows Vista, avec PHP 5.2.0 et MySQL 5.0.22.

Quelqu'un aurait une idée ? Merci d'avance pour vos lumières.

  [Opened] Re: Erreur à la création d'un DAO MySQL

Reply #1 Posted by sylozof on 01/07/2008 13:10

J'ai oublié de signaler que j'utilise Jelix 1.0RC2, et que j'ai testé sur une autre config sous Unix où ça fonctionnait sans problème.

En attendant je vais faire le DAO à la main.

  [Opened] Re: Erreur à la création d'un DAO MySQL

Reply #2 Posted by laurentj on 01/07/2008 13:11

Salut,

ton fichier test, tu le lance bien en ligne de commande ? Parce que le php en ligne de commande et celui du serveur web ne partagent pas forcément le même php.ini... (c'est le cas sous debian et ubuntu par ex)

  [Opened] Re: Erreur à la création d'un DAO MySQL

Reply #3 Posted by sylozof on 01/07/2008 16:15

Bien joué Laurent, merci. En effet, j'avais lancé mon fichier de test depuis le serveur web, mais en le lançant depuis la ligne de commande il m'affiche bien que la fonction mysql_connect n'existe pas. C'est parce que, comme tu l'as dit, php.exe en ligne de commande n'utilise pas le même php.ini que le PHP utilisé en module d'Apache.

D'ailleurs EasyPHP n'installe même de php.ini pour php.exe, donc en ligne de commande aucune extension n'est activée, et donc impossible d'utiliser les fonctions mysql.

Pour info, si ça peut servir, il faut installer un php.ini dans C:\Windows\ pour l'utilisation en ligne de commande (celui qui est dans le dossier EasyPHP sert pour le serveur). Pour cela j'ai copié le fichier php.ini-recommended du répertoire php5 de EasyPHP vers le dossier C:\Windows\, je l'ai renommé en php.ini, puis je l'ai édité pour modifier la directive extension_dir (en lui donnant le chemin du dossier des extensions d'EasyPHP)

 extension_dir = "C:\Program Files\EasyPHP 2.0b1\php5\ext\"

et j'ai décommenté la ligne extension=php_mysql.dll qui charge l'extension MySQL.

La création de DAO fonctionne correctement désormais.

Merci pour la réactivité et la solution.

 
Page
  1. [Résolu] Erreur à la création d'un DAO MySQL