Linux xampp et phpmyadmin
Résolu/Fermé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
- Install xampp ubuntu
- Ubuntu iso - Télécharger - Systèmes d'exploitation
- Ubuntu 24.04 - Accueil - Ubuntu
- Ubuntu 32 bits - Télécharger - Systèmes d'exploitation
- Install microsoft store - Guide
- Play store install - Télécharger - Téléchargement & Transfert
8 réponses
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
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.
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.
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 ?
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
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
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....
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.
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à.
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...
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....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question20 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(); }
Dans ma BDD et dans structures de mes tables j'ai:
Aucun partitionnement n'est défini !
Est ce normal ?
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 ?
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.
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 ?
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.
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 ...
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).
- Le serveur mysql est lancé
Bonne chance