Linux xampp et phpmyadmin

Résolu/Fermé
gismin Messages postés 22 Date d'inscription samedi 6 juillet 2013 Statut Membre Dernière intervention 10 août 2023 - 18 juil. 2023 à 19:04
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 - 25 juil. 2023 à 15:09

Bonjour,

Bonjour,
Je voudrais utiliser xampp sous linux mint mais j'ai un problème rien ne s'enregistre dans ma BDD contrairement sous windows avec le même code.
phpMyAdin semble bloquer toute écriture. Y a t'il quelque chose à faire  pour débloquer ?


Linux / Firefox 115.0

A voir également:

8 réponses

mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 7 806
Modifié le 18 juil. 2023 à 19:12

Bonjour,

Quelle distribution Linux utilises-tu ?
Qu-as tu fais jusqu'à présent ?

En admettant que tu sois sous Debian ou une distribution qui en dérive (Ubuntu, Mint, ...) :

sudo apt update
sudo apt install apache2 default-mysql-server libapache2-mod-php

On active PHP :

ls /etc/apache2/mods-available/php*conf  # Voir la version de PHP, par exemple 8.1
sudo a2enmod php8.1                      # Adapter la version of PHP dans cette commande
sudo systemctl restart apache2           # Redémarrer apache2

Pour installer phpmyadmin :

sudo apt install phpmyadmin

Si les questions suivantes te sont posées :

  • Choisir comme serveur web : apache2.
  • Si on te demande si la base doit être configurée avec db-common, choisis "Yes".

Pour accéder à phpmyadmin, il te suffit de te connecter à http://localhost/phpmyadmin

Toutefois, il est recommandé de sécuriser l'installation phpmyadmin (voir cette page)

Bonne chance

0

Mon installation de xampp marche normalement je peux accéder à mon site et le modifier.

Le problème c que je ne peux rien rentrer dans la BDD.

j'ai linux mint.

0
jordane45 Messages postés 38320 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2024 4 707
18 juil. 2023 à 20:15

Bonjour

Quand tu dis que tu ne peux rien enregistrer dans ta base, est-ce que c'est à partir de PHP, en ligne de commande directement sur Linux, ou depuis un script en PHP ?

Si c'est un script en PHP, il serait bien de nous montrer ce qu'il contient...

Merci également de nous préciser la version de PHP que tu as installé sur ton Linux.


0

Oui avec http://localhost/phpmyadmin/ phpMyAdmin s'ouvre et ma BDD est bien présente.

Le code simple suivant affiche bien "CONNECT" mais n'enregistre rien dans la BDD.

<?php
if (include('bddconnect.php')) {
  echo "CONNECT";
  $nom = 'jo';
  $req = $bdd->prepare( "INSERT INTO clients (nom) VALUES(:$nom)" );				
  $req->execute(array('nom' => $nom  ));
}
?>

je rappelle que sous windows mon code orignal plus complexe marche mais n'enregistre rien sous linux mint.

En ligne de commande je ne sais pas faire.

Comment savoir ma version PHP ?

0
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 7 806 > gismin
20 juil. 2023 à 15:15

Bonjour,

Le code simple suivant affiche bien "CONNECT" mais n'enregistre rien dans la BDD.

  • Le code semble incomplet, puisqu'on ne voit pas la déclaration de $bdd. L'as retiré car il fait apparaître ton login mot de passe ?
  • As-tu essayé de repartir de ces exemples ?
    • En particulier, arrives tu déjà à faire un SELECT ? Cela permettrait de confirmer que l'authentification a réussi et que tu travailles sur la bonne base et la bonne table.
  • Est-ce que ton utilisateur MySQL a les droits en écriture sur la table que tu tentes de modifier ?

Comment savoir ma version PHP ?

Pour voir ta version de PHP, exécute dans un terminal :

php --version

Bonne chance

0
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 7 806
Modifié le 19 juil. 2023 à 16:19

Bonjour,

À ce stade, je vois plusieurs explications possibles.

Le serveur MySQL n'est pas lancé

Que donne la commande suivante ?

systemctl status mysqld.service 

Si le serveur n'est pas lancé, démarre-le avec :

sudo systemctl start mysqld.service

L'authentification est incorrecte

Est-ce que tu parviens avec le client mysql en utilisant le même login, la même provenance, et le même mot de passe que ton site web ?

mysql -u my_user -p

Si ça n'est pas le cas, connecte toi en root et vérifie que l'utilisateur de ton site web est bien défini :

mysql -u root -p

Ensuite :

use mysql
select user,host from user;

(reporte-nous le résultat).

La bind-address du serveur MySQL est incorrecte

Sous Debian, par défaut, mariadb utilise pour bind-address l'adresse 127.0.0.1 (voir /etc/mysql/mariadb.conf.d/50-server.cnf). Cela signifie que seul le trafic local à la machine est écouté par le trafic mysql. En conséquence, si ton serveur web est localisé sur une autre machine que le serveur de base de donnée, ses tentatives de connexions seront ignorées.

De manière générale, on essaye de configurer la bind-address de sorte à ce que le minimum de machines ait la possibilité de se connecter à la base, cela limite les risques d'attaques. Ainsi, comme le serveur web et le serveur de base de données sont souvent sur la même machine, 127.0.0.1 est souvent le bon choix.

Indique-nous si ton serveur web et ton serveur de base de données sont co-localisés. Si ça n'est pas le cas, tu dois corriger ta bind-address (précise-nous comment sont interconnectés tes différents serveurs). Il faut alors utiliser

  • soit l'IP de l'interface du serveur de base de donnée recevra les requête du serveur web
  • soit 0.0.0.0, ce qui signifie qu'aucun filtrage ne sera effectué.

Une fois corrigé, il faut redémarrer le serveur de base de donnée

sudo systemctl restart mysqld.service

Bonne chance

0
jordane45 Messages postés 38320 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2024 4 707
19 juil. 2023 à 19:02

Bonjour

L'utilisateur ayant indiqué qu'il passait par xampp ... Ta réponse  précédente lui proposant d'installer les packages à la main ainsi que celle-ci sembent plutôt à côté de la plaque....

0
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 7 806 > jordane45 Messages postés 38320 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2024
Modifié le 20 juil. 2023 à 13:53

Disons que je n'ai pas exactement le même point de vue. Dans son message initial gismin explique que son installation ne marche pas. Personnellement ça ne m'étonne pas, ce n'est pas comme ça qu'on est supposé faire une installation LAMP. Je lui ai simplement indiqué comment faire proprement. Ensuite, gismin souhaite rester avec son installation actuelle, il peut se référer à nos autres messages.

0
jordane45 Messages postés 38320 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2024 4 707 > mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024
Modifié le 20 juil. 2023 à 17:50

dans son message initial gismin explique que son installation ne marche pas. Personnellement ça ne m'étonne pas, ce n'est pas comme ça qu'on est supposé faire une installation LAMP

Donc si une personne indique qu'il a un souci sous word avec un PC tout neuf .. tu lui expliques comment démonter et remonter son pc ?

En plus.. il ne parle pas de LAMP .. mais de XAMPP  ( xampp etant un "lamp"  ok .. mais pour le coup.. il est passé par ce logiciel pour des raisons que nous ne connaissons pas.. et à moins qu'il confirme un dysfonctionnement avéré de celui-ci.. je ne vois pas pourquoi tu es parti directement sur une réinstallation via une "autre méthode" )

Et puis dans son message #2.. il indique bien 

Mon installation de xampp marche normalement je peux accéder à mon site et le modifier.

PS: Je déplace la question dans le forum prorgrammation/php,  le souci semblant bien venir de là.

0
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 7 806 > jordane45 Messages postés 38320 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2024
21 juil. 2023 à 11:46

 je ne vois pas pourquoi tu es parti directement sur une réinstallation via une "autre méthode [...]

Et puis dans son message #2.. il indique bien "Mon installation de xampp marche normalement je peux accéder à mon site et le modifier"

Pour deux raisons :

  • Le message #2 n'est pas clair. Il semble indique qu'apache semble marcher, mais ne permet pas de savoir si mysql ou php marchent bien. 
    • Est-ce que le serveur mysql est installé ? Est-il lancé ?
    • Idem pour php ? Est-ce php-mysql est installé ?
    • Rien ne permet de l'affirmer, juste "espérons que XAMPP l'ait fait".
  • Si on se réfère à ce lien, on voit clairement que XAMPP est une archive et donc pas installé via le gestionnaire de paquets. Cela signifie qu'il n'est pas mis à jour avec le reste du système, avec tous les problèmes que tu peux imaginer (trous de sécurité si pas mis à jour, incohérences ou conflits potentiels avec le reste du système...).

Partir sur une installation propre n'est donc pas si hors sujet. Et on ne parle pas de réinstaller un PC, pas la peine de forcer le trait :-)

PS: Je déplace la question dans le forum prorgrammation/php,  le souci semblant bien venir de là.

À ce stade, ce peut être une erreur de programmation ou un problème de droit. Par ailleurs, je suppose que si la connexion (ou la requête) étaient invalides, il y aurait eu une erreur PHP...

0
jordane45 Messages postés 38320 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2024 4 707 > mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024
21 juil. 2023 à 12:41

ailleurs, je suppose que si la connexion (ou la requête) étaient invalides, il y aurait eu une erreur PHP...

A condition que l'affichage des erreurs php soit activé et que l'affichage des erreurs PDO le soit également. D'où le lien que je lui ai demandé de suivre.... 

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38320 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2024 4 707
20 juil. 2023 à 16:14

Bonjour,

Vu que tu sembles utiliser du PDO pour exécuter tes requêtes SQL, et afin de déterminer efficacement la cause de ton souci, merci d'appliquer les conseils donnés ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

(plus particulièrement l'activation des erreurs PDO ...  ET l'utilisation des try/catch )

Mais même sans ça, je peux te dire que ton souci se situe bien au niveau de ta requête et en aucun cas à un souci de connexion à la bdd

Il faut remplacer :

  $req = $bdd->prepare( "INSERT INTO clients (nom) VALUES(:$nom)" );				
  $req->execute(array('nom' => $nom  ));

par

try{
  $req = $bdd->prepare( "INSERT INTO clients (nom) VALUES(:nom)" );				
  $req->execute(array(':nom' => $nom  ));
}catch(Exception $e){
  echo "Erreur " . $e->getMessage();
}

0

Dans ma BDD et dans structures de mes tables j'ai:

Aucun partitionnement n'est défini !

Est ce normal ?

0
jordane45 Messages postés 38320 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2024 4 707
21 juil. 2023 à 10:45

Ce n'est pas anormal si tu n'as pas défini toi-même un partitionnement pour tes tables ( ceci est une notion avancée du moteur ma SQL et je doute que tu en aies besoin)

Quoi qu'il en soit, peux-tu nous dire si le code que je t'ai donné ainsi que le lien ton permis de résoudre le problème initial de cette discussion ?

0

J'ai bien essayé :

try {
  $req = $bdd->prepare( "INSERT INTO clients (nom) VALUES(:nom)");
  $req->execute(array(':nom' => $nom ));
} catch(Exception $e) {
  echo "Erreur " . $e->getMessage();
}

... et c'est pareil.

Ma table a été installée en faisant simplement "importer" à partir d'un autre phpMyAdmin.

Je rappelle que le même code marche sous windows.

C'est bien "lampp" qui est installé : /opt/lampp/htdocs .. mais avec "http://localhost/dashboard/" c'est "XAMPPApache + MariaDB + PHP + Perl" qui s'affiche.

Je comprends pas la subtilité si subtilité il y a.

0
jordane45 Messages postés 38320 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2024 4 707
22 juil. 2023 à 11:19

Il n'y a pas que la requête à changer as-tu bien effectué tout ce qui est indiqué dans le lien que je t'avais communiqué ??

- activer l'affichage des erreurs PHP

- activer l'affichage des erreurs PDO dans la connexion à la base.

.

Et quand tu dis que ça fait pareil... On est d'accord que tu ne vois pas de message d'erreur ? 

Tu ne nous a pas non plus répondu dans nos premières questions, est-ce que si tu testes ta requête en ligne de commande ou directement depuis l'onglet SQL du logiciel PHPmyadmin... Est-ce que ça fonctionne ?

0
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 7 806
24 juil. 2023 à 10:30

C'est bien "lampp" qui est installé : /opt/lampp/htdocs .. mais avec "http://localhost/dashboard/" c'est "XAMPPApache + MariaDB + PHP + Perl" qui s'affiche. Je comprends pas la subtilité si subtilité il y a.

Voir ici. En bref, XAMPP est une manière d'installer de faire une installation LAMP, et installe en plus perl, profptd et sqlite (qui ne te servent pas forcément selon ton cas d'usage). Comme le montre le chemin d'installation (dans /opt), l'installation n'est pas faite par le gestionnaire de paquets ce qui signifie que l'installation ne suis pas les mises à jour du système (c'est ce qui avait motivé mon message #1)

Ma table a été installée en faisant simplement "importer" à partir d'un autre phpMyAdmin.

Cela laisse entendre que les serveurs apache et MySQL sont lancés et que PHP semble correctement installés, c'est déjà un bon début.

Je rappelle que le même code marche sous windows.

Le fait que la table en question soit importée (via phpmadmin) et que le code marche sous Windows ne garantit pas que l'utilisateur MySQL mis en jeu dans ton code soit valide et que la connexion soit fonctionnelle (d'où mon message #4), car ceux-ci les utilisateurs définis dans la table mysql.user. Pas de connexion, pas de requête. Pas de requête... pas de requête.

0

je suis connecté à la BDD puisque comme je le disais avec le code ci-dessous il m'affiche connect:

if (include('bddconnect.php')) {
  echo "CONNECT";

...

je vais laisser tomber pour l'instant

merci jordane45 et mamiemando d'avoir bien voulu vous pencher sur mon problème.

J'aime bien linux mint plus agéable et performant que windows .

Dommage ...

0
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 7 806
Modifié le 25 juil. 2023 à 15:14

Bonjour

  • Ce test ne permet pas de conclure si la connexion à la base de donnée est fonctionnelle.
    • D'une part, je ne pense pas que l'on puisse impliquer la directive include dans un test (soit le fichier existe et le code avancera jusqu'au echo "CONNECT", soit le fichier n'existe pas et le script PHP devrait planter).
    • D'autre part, cette vérification ne permet que de s'assurer que PHP a pu inclure un autre fichier (en l'occurrence, bddconnect.php). Rien ne garantit (sans voir le contenu de ce fichier) que l'inclure déclenche réellement une connexion.
    • Il faudrait voir le contenu de bddconnnect.php, mais il y a de bonnes chances s'il est correctement écrit qu'il faille d'abord inclure ce fichier, puis appeler la fonction adéquate.
  • En résumé, cela ne permet ni de vérifier si le serveur SQL est lancé, ni si ton script PHP a pu se connecter à ta base de donnée, ni si l'utilisateur SQL impliqué a des droits suffisants pour accéder et/ou altérer une table donnée.
  • Pas de problème si tu veux laisser tomber pour le moment. Si un jour tu veux te pencher sur ce problème ultérieurement, je t'invite à vérifier les étapes suivantes, dans cet ordre (si une étape échoue, les suivantes ne peuvent pas marcher) et avant de considérer le code PHP :
    • Le serveur mysql est lancé
      systemctl status mysqld.service 
    • L'utilisateur mysql (disons my_user) que tu souhaites utiliser dans ton script PHP est valide et a des droits suffisants. Pour cela utilise la commande suivante, sur la machine qui héberge le serveur mysql :
      mysql -u my_user -p

      Puis tape le mot de passe. Si tu franchis cette étape, cela signifiera qu'au moins le couple (login, mot de passe son correct).

    • Répète le test avec précédent depuis la machine qui héberge le serveur web (si ça n'est pas la même). Si ça ne marche pas, c'est un problème de bind-address, de pare-feu, ou d'utilisateur mysql (car en mysql, la provenance joue un rôle dans l'authentification).

    • Une fois connecté, dans l'interpréteur mysql, place-toi dans la base de données adéquate.

      use ma_base;
    • Puis lance une requête (d'abord en lecture, puis ensuite éventuellement en écriture) pour reproduire ce que ferait ton code PHP. Si tu ne valides pas cette étape, c'est soit que ta requête est fausse, soit que les droits définis sur ta table de l'autorise pas.
    • Ensuite seulement, commence à considérer PHP. Assure-toi que tu as bien réalisé dans ton script PHP la connexion à la base et que tu as correctement écrit ta requête (et correctement passé ses paramètres).

Bonne chance

0