> Base créé sous PHPmyadmin incompatible avec linux

Bonjour,
Je m’explique : j’ai créé un petit logiciel de demande d’intervention pour un établissement scolaire. J’ai travaillé sur mon PC sous Windows et donc avec EasyPHP. Lorsque je teste mon logiciel sur un PC avec EasyPHP, pas de souci, tout fonctionne parfaitement. Mais lorsque je mets ce même logiciel sur un serveur Linux, la procédure d’installation créé la base, les tables et les champs, mais rien ne peux s’y inscrire !

Par exemple : une fois que la base est créée, l’utilisateur doit aller sur la page “install.php” qui permet de créér le compte de l’administrateur (login, mot de passe, email), eh bien, sous windows avec easyphp, pas de problème, mais si le logiciel est installé sur le serveur web d’un serveur linux, le formulaire ne fait rien dans la table !

Que faire ?

Le ‘donc’ m’échappe un peu…

On peut avoir les messages d’erreur?

Commencer par donner un message d’erreur explicite, parce que ne connaissant pas le code en question et ne pratiquant pas la divination personne ne pourra te répondre.

oups double post :smiley:

Le pire c’est que je n’ai pas de message d’erreur.

Je reprends en essayant d’être un peu plus clair :
J’ai créé sur mon PC perso sur lequel est installé EasyPHP 1.7 un petit module en PHP basé sur une base MySql.
Ce petit module est censé permettre à des usagers d’un établissement scolaire de faire parvenir à l’administrateur réseau par mail une demande d’intervention sur un PC en panne.
Ce petit module, créé avec PSPadEditor, fonctionne parfaitement si je l’installe sur n’importe quel PC sous Windows sur lequel est installé EasyPHP.

A ma grande surprise, j’ai installé ce module sur mon serveur Linux (Mandrake 8.1) sur lequel est activé le serveur web Apache et sur lequel fonctionnent sans soucis plusieurs autres modules utilisant la technologie PHP/MySQL (notamment un intranet).

Mon module fonctionne de la manière suivante : après avoir copié dans le répertoire /var/www/html/ du serveur linux le dossier “intervention” (qui est mon module), on créé une base sql sur le serveur nommée “intervention”, ensuite, on ouvre le navigateur internet, puis on va sur la page “http://ip_du_serveur/intervention/install.php”. Cette page “install.php” contient un formulaire permettant d’une part d’importer un fichier “intervention.sql” contenant les différentes tables de ma base, et d’autre part de remplir un formulaire dans le but de créer d’administrateur du module (contenant le login, le mot de passe et l’adresse mail). Eh bien, c’est à partir de là que le bas blesse, puisque l’importation du fichier sql fonctionne bien (les tables et les champs sont bien créés dans la base sur le serveur), mais la validation du formulaire de création de l’administrateur ne remplit pas du tout la base.

Je vous mets pour exemple la copie du code php de mon fichier “install.php” :

[cpp]

<? if(isset($_POST['login'])) { mysql_connect ("localhost", "root", ""); mysql_select_db ("intervention"); $login=$_POST['login']; $password=md5($_POST['password']); $email=$_POST['email']; $domaine=$_POST['domaine']; mysql_query('INSERT INTO administrateur VALUES("", "' .$login. '", "' .$password. '", "' .$email. '", "' .$domaine. '")') or die ("Impossible d'enregistrer l'administrateur."); mysql_close(); ?>

Administrateur enregistré !
N’oubliez pas vos codes d’accès !

<? } else { ?>

[i]Création de l'administrateur[/i]

Login

Mot de passe

Adresse mail

Domaine de l'établissement


<? } ?> [/cpp]

tu es sur que root n’as pas de password sur ton serveur Linux dans MySQL ?

:stuck_out_tongue: Encadres ta connexion par des tests.
Vérifies si tu peux bien te connecter.
Fais afficher des messages en cas d’erreur.

Testes sous-programme par sous-programme. Tu vas bien trouver quelle portion de code pose problème.

j’ai effectivement oublié de mettre le mot de passe de connexion à la base, mais après avoir rectifié cela et ajouté un 'or die (“impossible de se connecter”) après le “mysql_connect”, je n’ai toujours pas de message d’erreur ni d’ajout dans ma base. ;(

Donc :
Tu te connectes à une base.
La base existe.
Tu est un utilisateur enregistré avec les droits nécessaires à la création d’un utilisateur type admin.
On entend ici un utilisateur ayant tous les droits sur la base je suppose.
Tu effectues une requête sur la table.
Rien ne se passe.
Peux tu essayer un show tables sur la base pour voir si les tables sont là.
Tu sauras aussi si il y a un problème avec les requêtes.
(affiches le résultats).

Je vais essayer ça demain au taf. Merci à tous en tous les cas !

Bon toujours aucune erreur en vue.

Par contre, après avoir fait un phpinfo() sur chacun des systèmes, il s’avère que EasyPhp 1.7 utilise une version 4.3.3 de php et que mon serveur linux tourne avec une version 4.0.x !

Pensez-vous que ça puisse venir de là ?

Je ne pense pas.
Les fonctions non reconnues seraient signalées.

Tu dis qu’il y a d’autres modules.
Essayes de voir leur code de connexion et de création de table.
Essayes de créer ta table par une console MySql.
Essayes d’entrer des utilisateurs et des tuples.

Vérifies aussi les logs du serveur.

quels logs dois-je regarder sur mon serveur ?

Sinon, un module fonctionne avec ce mode de connexion à la base :


 $db = mysql_connect ("localhost", "root");
 mysql_select_db ("intervention",$db);

J’ai essayé, mais ça ne donne rien de plus.
C’est vraiment ballot cette histoire, j’étais tout content avec mon petit programme, et vlatipa que je peux pas l’utiliser ! :frowning:

Sinon, si quelqu’un est intéressé pour le tester chez lui voir si ça fonctionne, je peux l’envoyer en mp ou le mettre à dispo en ftp.

Ton problème vient certainement de mySQL en lui même.

  1. vérifie si tu as bien des noms en minuscules dans tes noms de tables. Cela importe sous mySQL puisque celui-ci utilise des fichiers.

  2. update ton serveur linux ou downdate ton serveur Windows (niveau php) même si je le déconseille. L’idée est simple : tu vas simplement chercher à obtenir le même problème sous WIndows. Si tu l’as pas, c’est que c’est pas php.

  3. A tout hasard, vérifie les ports de connexion au serveur mySQL, si le firewall fait pas chier son monde

je n’ai pas de majuscules dans le nom de mes tables.
Je ne peux pas updater mon serveur (je n’en suis pas l’administrateur), et en plus c’est un travail prévu pour fonctionner sur un serveur Linux que plusieurs établissements de ma région utilisent, ça demanderait donc à tout le monde d’updater le serveur, et c’est injouable.
Sinon, j’ai vérifié ce problème chez 3 établissements différents et je ne pense pas que le firewall en soit la cause…

Bon, je vais dormir là, je reviendrais demain.
MErci encore !

Ils sont encore en php4.0.x ? Ils se rendent compte de la faille que ça représente? Sinon ton problème est con (je viens de tilter)

http://fr3.php.net/register_globals

Notamment :

depuis php4.1.x les tableaux superglobaux tels que $_GET, $_POST et $_SERVER, etc. sont disponibles

Au choix : replace $_POST by $HTTP_POST_VARS
ou: $_POST = &$HTTP_POST_VARS.

Ou mettre à jour les serveurs (ce qui de toute façon aurait du être fait depuis le début)

Oh !

C’est plutôt une bonne nouvelle ça, disons qu’on avance, bon, je teste ça de suite et je vous tiens au courant.

C’est parfait !!!

Ca marche, merci encore ! :jap: