Test création d'un nouveau module

Bonjour,

Je voulais commencé à tester la création d’un nouveau module en suivant les instructions du wiki.
A l’étape Créer vos tables SQL et la classe PHP des accesseurs lorsque je dois générer les Générer la classe PHP d’accès avec la commande php build_class_from_table.php, j’obtiens l’erreur suivante :

Warning: require_once(/…/…/htdocs/master.inc.php): failed to open stream: No such file or directory in /var/www/dolibarr-2.7.0/htdocs/monmodule/sql/build_class_from_table.php on line 38

Fatal error: require_once(): Failed opening required ‹ /…/…/htdocs/master.inc.php › (include_path=’.:/usr/share/php:/usr/share/pear’) in /var/www/dolibarr-2.7.0/htdocs/monmodule/sql/build_class_from_table.php on line 38

Si quelqu’un sait d’où cela peut venir …
Merci

Bonjour,

J’ai exactement le même problème. Je pense que c’est parce que j’utilise XAMPP, et que quand j’utilise la commande, c’est mon Ubuntu et non le serveur XAMPP qui interprète le fichier.
Comment faut-il faire pour que la commande soit interprétée par le serveur ? Et si je me trompe, quelqu’un sait-il d’ou vient ce problème ?

Merci !

Denis

tu as déplacé le fichier « build_class_from_table.php » dans ton rep « /htdocs/monmodule/sql/ » ?

En effet je n’avais pas vu cette étape sur le wiki.
J’ai déplacé le fichier, modifié l’adresse vers le fichier master.inc.php

require_once("../../../htdocs/master.inc.php");

Quand je lance le script voilà ce que j’obtiens :

$ php build_class_from_table.php llx_productdiscount                                      
> ErrorInternalErrorDetected:
build_class_from_table.php
> DatabaseTypeManager:
mysqli
> RequestLastAccessInError:
ErrorNoRequestInError
> ReturnCodeLastAccessInError:
ErrorNoRequestInError
> InformationLastAccessInError:
ErrorNoRequestInError
> Message:
host=localhost, port=0, user=dolibarr, databasename=dolibarr-cvs, Mysqli PHP functions for using Mysqli driver are not available in this version of PHP. Try to use another driver.
$ 

Dois-je mettre à jour PHP ? Installer les drivers Mysqli ? Je pensais qu’ils étaient déjà installé avec Xampp.

Merci !

Denis.

UP

Excusez-moi mais la classe qui doit être générée me manque un peu pour avancer dans le développement de mon module…

Merci !

il faut activer le mysqli dans ton php.ini et redémarrer apache

Toujours énigmatique ce Régis :tongue:

Comment dois-je m’y prendre pour activer mysqli ?

J’ai dé-commenté la ligne

;extension=php_mysqli.so

En relançant LAMPP, j’ai des pages de :

Warning: PHP Startup: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in Unknown on line 0
et puis :

Warning: PHP Startup: Unable to load dynamic library '/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/php_mysqli.so' - /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/php_mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0

avant que le serveur ne se lance.

Je coince…

il faut vérifier la configuration des « locales » sur ton serveur, tu as quel type de serveur ?

J’ai un serveur XAMPP 1.7.2 et je suis sur Ubuntu 9.10.
Je ne m’y connais pas trop en configuration d’apache, c’est pourquoi je me suis tourné vers XAMPP.
Du coup, les « locales », ca ne me dit rien dsl !
Je vais faire quelques recherches pour voir…
Merci et n’hésite pas si tu as plus d’infos à me donner.

Denis.

Bonjour,

Ça y est j’ai enfin résolu mon problème, voici ce que j’ai fait :

  • J’ai réinstallé PHP-5.3 sur mon ordinateur, qui comprend les drivers Mysql. C’est ce Php qui va interpréter le script exécuté dans le terminal.
  • J’ai lancé Mysql de LAMPP (sudo lampp startmysql)
  • J’ai modifié le fichier /etc/php5/cli/php.ini pour indiquer le chemin vers le socket Mysql à utiliser (celui de Lampp) : mysql.default_socket = /opt/lampp/var/mysql/mysql.sock
  • Enfin, j’ai exécuté le script : php build_class_from_table.php …

Comme ça, Php se connecte sur le serveur Mysql de Lampp.
Il ne fallait pas modifier la configuration Php de Lampp puisque ce n’est pas lui qui est utilisé dans le terminal.

Denis.

Bonjour,

Je dépoussière un peu le sujet… non pas sur le pb de mysql mais sur le contenu de la classe.

Je m’explique: le script a bien généré ma classe mais les methodes CRUD sont vides (du moins les requêtes) il ne s’alimente sur les fichiers sql ou ma base ??

La seule petite erreur est:
Error: Failed to get description for table ‹ matable ›.

Une explication peut-être ?

Merci

@boosterjack : bonjour, à mon avis ta « petite erreur » est la cause du problème; en effet s’il ne trouve pas la table, il va avoir du mal à créer les méthodes CRUD correspondantes. Est-ce que ta table est bien créée dans ta base, et est-ce qu’elle comporte des champs ?

En effet, le programme se base sur la table dans la base de données, et non sur le script sql.

Effectivement juste en mode boulet j’ai oublié le prefix de ma table donc forcement…

Merci pour vos réponses

Bonjour,

J’ai l’erreur suivante a l’execution de ce script :

Error: Dolibarr config file content seems to be not correctly defined.<br>
Please run dolibarr setup by calling page <b>/install</b>.<br>

Impossible de comprendre pourquoi… :confused: