PHP et MySQL ne communiquent pas


9

Je suis arrivé à la conclusion que mon installation PHP et mon installation MySQL ne s'entendent pas; Je travaille sur la création de ma première page Web qui utilise MySQL pour le contenu, mais après deux jours, des pages de manuel, de la documentation en ligne et des dizaines de tutoriels, je n'arrive pas à faire fonctionner la partie PHP / MySQL. J'ai un serveur Web domestique établi (je suis le seul administrateur / utilisateur) qui exécute Apache et héberge mes pages Web. J'ai installé MySQL et j'ai pu créer et interroger une base de données via Terminal. J'ai installé PHP et je peux utiliser echo pour imprimer du texte dans le document. Mais quand je travaille avec MySQL, tout change…

J'ai une page qui contient des éléments d'initialisation. contient quelques paragraphes de code HTML codé en dur puis de code PHP pour accéder à MySQL. Lorsque j'ai chargé la page pour la première fois, il n'en est résulté qu'une page vierge. J'ai commenté la section PHP et rechargé pour confirmer que le HTML brut fonctionnait toujours, ce qu'il a fait. Par conséquent, une partie de PHP empêchait le chargement de la page.

Pour commencer à dépanner mon code, j'ai laissé tout le code PHP commenté à l'exception du code suivant pour la connexion au serveur, qui est adapté de plusieurs tutoriels différents:

<?
echo("<p>PHP is working</p>"); 
$ses = mysql_connect("localhost","username","password");
if(!$ses){
 echo("<p>Connection to content server failed.</p>");
 exit();
}
echo("<p>Database Connected</p>");
?>

Lorsque la page est chargée, le début du HTML se charge en plus d'un paragraphe indiquant «PHP fonctionne», mais ni le message d'échec ni de succès n'apparaissent. J'ai supprimé la structure If du code - afin qu'il ne reste que deux échos et mysql_connect - et j'ai obtenu le même résultat.

Il semble que la fonction mysql_connect oblige le serveur à arrêter le chargement du code lors de son exécution, mais je n'ai pas d'idées sur la façon de le corriger. Pour mémoire: j'ai modifié le fichier php.ini pour inclure la ligne "connection = msql.so", et j'utilise MySQL 5.5, Apache 2.2.22, PHP 5.3.10, Ubuntu 12.04. De plus, mon routeur et mon modem ont été configurés pour transmettre le port 3306 au serveur - bien que je ne vois pas comment cela devrait être nécessaire - et mon nom d'utilisateur et mon mot de passe MySQL ont été vérifiés trois fois et sont identiques à ceux que j'utilise avec succès dans le terminal.

Qu'est-ce que je rate?


1
Remplacez «nom d'utilisateur» et mot de passe par un nom d'utilisateur (probablement root) et un mot de passe corrects
Tachyons

2
Ouais, je l'ai fait. Je ne pensais tout simplement pas que ce serait une bonne idée de jeter le nom d'utilisateur et le mot de passe sur le forum. Comme je l'ai dit à la fin, j'ai vérifié le nom d'utilisateur et le mot de passe de nombreuses fois pour m'assurer qu'il correspond à ce que j'utilise pour créer, accéder et modifier la base de données via Terminal.
Casey Hungler

J'ai également essayé de remplacer localhost par 127.0.0.1 ainsi que les adresses IP locales et globales du serveur, mais aucune d'entre elles n'a fait de différence non plus.
Casey Hungler

1
Avez-vous installé php5-mysql?
laurent

Je suis presque sûr, mais je vais réessayer.
Casey Hungler

Réponses:


9

Tout semble OK donc je pense que votre installation n'est pas terminée. Pour que mysql et php communiquent, vous devez installer le php5-mysql paquet:

sudo apt-get install php5-mysql

NB: J'ai dû redémarrer l'ordinateur avant que cela ne fonctionne.
user124384

3

Installez le php5-mysqlpackage et utilisez mysqli_connect au lieu de mysql_connect


Merci, quelqu'un d'autre l'a suggéré aussi, et cela a fonctionné! Je suis curieux cependant, dans mes recherches, j'avais croisé des choses sur mysqli (et PDO était généralement là aussi), qu'est-ce que c'est? Qu'est-ce qui le rend meilleur que mysql normal?
Casey Hungler

MySQLi est une version améliorée.
hibou

D'après ce que je sais, vous devriez utiliser mysqli car il est recommandé par l'équipe php et mysql_connect n'est plus en développement, seulement en maintenance. Je pense que mysql_connect n'accepte pas les instructions préparées par exemple et bien d'autres choses.
laurent


1
sudo apt-get install php5-mysql

Trouvez la version Tomcat sur /etc/init.d/. Il devrait y avoir un fichier avec le nom tomcat7, donc 7 est la version

sudo service tomcat7 stop 
sudo service tomcat7 start

Parfois, le redémarrage de la machine aide à trier d'autres problèmes. Après le redémarrage, n'oubliez pas d'exécuter:

sudo service tomcat7 start 
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.