web-dev-qa-db-fra.com

Fonction indéfinie mysql_connect ()

J'ai exécuté aptitude install php5-mysql (et redémarré MySQL/Apache 2), mais j'obtiens toujours l'erreur suivante:

Erreur fatale: appel de la fonction indéfinie mysql_connect () dans /home/validate.php à la ligne 21 

phpinfo() indique que le fichier /etc/php5/Apache2/conf.d/pdo_mysql.ini a été analysé.

50
user1765369

Eh bien, c'est votre chance! On dirait que PDO est prêt; utilisez cela à la place.

Essayez de vérifier si le module d'extension PHP MySQL est en cours de chargement:

<?php
    phpinfo();
?>

Si ce n'est pas le cas, ajoutez ce qui suit dans le fichier php.ini:

extension=php_mysql.dll
41
wanovak

Je vois que vous avez étiqueté cela avec Ubuntu. Le pilote MySQL (et éventuellement MySQL) n'est probablement pas installé. En supposant que vous ayez SSH ou un accès terminal et des autorisations Sudo, connectez-vous au serveur et exécutez ceci:

Sudo apt-get install mysql-server mysql-client php5-mysql

Si les paquets MySQL ou le paquet php5-mysql sont déjà installés, cela les mettra à jour.


METTRE &AGRAVE; JOUR

Étant donné que cette réponse reçoit toujours le clic occasionnel, je vais la mettre à jour pour inclure PHP 7. PHP 7 nécessite un paquet différent pour MySQL, vous voudrez donc utiliser un argument différent pour la commande apt-get.

Sudo apt-get install mysql-server mysql-common php7.0 php7.0-mysql

Et surtout, mysql_connect() est obsolète depuis PHP v5.5.0. Reportez-vous à la documentation officielle ici: PHP: mysql_connect ()

47
Sarcastron

Si quelqu'un est venu ici avec le problème de docker php images officielles , tapez la commande ci-dessous à l'intérieur du conteneur de docker.

$ docker-php-ext-install mysql mysqli pdo pdo_mysql

Pour plus d'informations, veuillez vous référer au lien ci-dessus dans la section How to install more PHP extensions (Mais c'est un peu difficile pour moi ...).

Ou ce doc peut vous aider.

https://docs.docker.com/samples/library/php/

30
kujiy

Si vous utilisez déjà PHP7, les fonctions précédemment déconseillées mysql_* ont été entièrement supprimées. Vous devez donc mettre à jour votre code en utilisant plutôt les fonctions PDO ou mysqli_*.

Si ce n'est pas possible, en tant que solution workaround, j'ai créé un petit fichier d'inclusion PHP, qui recrée les anciennes fonctions mysql_* avec mysqli_*()- functions: fix_mysql.inc.php

27
rubo77

J'étais également coincé avec le même problème de MySQL_connect () non défini. J'essayais de modifier le fichier PHP.ini mais cela me donnait la même erreur . Je suis arrivé à cette solution où j'ai modifié mon code à partir de php déprécié fonctions à de nouvelles fonctions.

$con=mysqli_connect($Host,$user,$password);

mysqli_select_db($con,dbname); 
//To select the database

session_start(); //To start the session

$query=mysqli_query($con,your query); 
//made query after establishing connection with database.

J'espère que cela vous aidera ... Cette solution fonctionne correctement pour moi.

7
apurva sharma

Essayer:

<?php
  phpinfo();
?>

Exécutez la page et recherchez mysql. Si ce n'est pas le cas, exécutez les opérations suivantes dans le shell et redémarrez le serveur Apache:

Sudo apt-get install mysql-server mysql-client php5-mysql

Assurez-vous également que toutes les lignes suivantes ne sont pas commentées dans votre fichier Apache2.conf (ou dans votre fichier conf.d/php.ini), à partir de

;extension=php_mysql.so

à

extension=php_mysql.so
5
fortune

J'imagine que votre installation PHP n'a pas été compilée avec le support MySQL. 

Vérifiez votre commande de configuration (php -i | grep mysql). Vous devriez voir quelque chose comme '--with-mysql=shared,/usr'.

Vous pouvez vérifier les instructions complètes à l’adresse http://php.net/manual/en/mysql.installation.php . Bien que, je préfère aller avec la solution proposée par @wanovak.

Néanmoins, je pense que vous avez besoin du support de MySQL pour utiliser PDO.

4
Muc

Dans le fichier php.ini

change ça 

;extension=php_mysql.dll

dans

extension=php_mysql.dll
4
Dominic Amal Joe F

La question est étiquetée avec ubuntu, mais la solution consistant à supprimer le commentaire de extension=mysqli.dll est spécifique à Windows. Je suis confus ici?!, Quoi qu'il en soit, commencez par exécuter <? php phpinfo ?> et recherchez mysql* dans la rubrique Configuration. Si vous ne voyez pas cela, cela signifie que vous n'avez pas installé ou activé php-mysql. Donc, installez d'abord php-mysql 

Sudo apt get install php-mysql

Cette commande installera php-mysql en fonction de la php que vous avez déjà installée, alors ne vous inquiétez pas pour la version !!.

Vient ensuite la solution spécifique à Unix, dans le fichier php.ini, commentez la ligne.

extension=msql.so

vérifiez que msql.so est présent dans /usr/lib/php/<timestamp_folder>, SINON

extension=path/to/msql.so

Enfin, redémarrez enfin les services Apache et mysql et vous devriez maintenant voir la section mysql sous Configrations en-tête dans phpinfo page

1
Dota2

J'avais cette erreur parce que le projet sur lequel je travaillais a été développé sur php 5.6 et après l'installation, le projet n'a pas pu être exécuté sur php7.1.

Pour ceux qui utilisent Vagrant avec ubuntu/nginx, dans le répertoire nginx (/ etc/nginx /), il existe un répertoire nommé "sites-disponibles" qui contient un fichier nommé comme l’URL configurée pour la maschine vaginale. Dans mon cas, Homestead.app. Dans ce fichier, il y a une ligne qui dit quelque chose comme 

    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;

Là, vous pouvez changer la version de php à celle souhaitée pour ce site particulier.

Googlé cela mais n'était pas vraiment capable de trouver une réponse simple qui dit où regarder et quoi changer.

J'espère que cela aide n'importe qui ... Merci.

0
freifede