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é.
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
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 ()
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.
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
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.
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
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.
Dans le fichier php.ini
change ça
;extension=php_mysql.dll
dans
extension=php_mysql.dll
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
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.