Ich habe aptitude install php5-mysql
ausgeführt (und MySQL/Apache 2 neu gestartet), erhalte aber immer noch diese Fehlermeldung:
Schwerwiegender Fehler: Rufen Sie die undefinierte Funktion mysql_connect () in /home/validate.php in Zeile 21 auf
phpinfo()
sagt, dass die Datei /etc/php5/Apache2/conf.d/pdo_mysql.ini analysiert wurde.
Nun, das ist deine Chance! Es sieht aus wie PDO ist bereit; benutze das stattdessen.
Prüfen Sie, ob das MySQL-Erweiterungsmodul PHP geladen wird:
<?php
phpinfo();
?>
Ist dies nicht der Fall, fügen Sie der php.ini
-Datei Folgendes hinzu:
extension=php_mysql.dll
Ich sehe, dass Sie dies mit Ubuntu markiert haben. Wahrscheinlich ist der MySQL-Treiber (und möglicherweise auch MySQL) nicht installiert. Angenommen, Sie haben SSH oder Terminalzugriff und Sudo-Berechtigungen, melden Sie sich beim Server an und führen Sie Folgendes aus:
Sudo apt-get install mysql-server mysql-client php5-mysql
Wenn die MySQL-Pakete oder das php5-mysql-Paket bereits installiert sind, werden diese aktualisiert.
UPDATE
Da diese Antwort immer noch gelegentlich angeklickt wird, werde ich sie mit PHP 7 aktualisieren. PHP 7 erfordert ein anderes Paket für MySQL, daher sollten Sie ein anderes Argument für den Befehl apt-get verwenden.
Sudo apt-get install mysql-server mysql-common php7.0 php7.0-mysql
Und vor allem wurde mysql_connect()
seit PHP v5.5.0 nicht mehr unterstützt. Die offizielle Dokumentation finden Sie hier: PHP: mysql_connect ()
Wenn jemand mit dem Problem von docker php official images hierher gekommen ist, geben Sie den folgenden Befehl in den Docker-Container ein.
$ docker-php-ext-install mysql mysqli pdo pdo_mysql
Weitere Informationen finden Sie im obigen Link How to install more PHP extensions
(Es ist jedoch etwas schwierig für mich ...).
Oder dieses Dokument kann Ihnen helfen.
Falls Sie bereits PHP7 verwenden, wurden die zuvor veralteten Funktionen mysql_*
vollständig entfernt. Daher sollten Sie Ihren Code mithilfe der PDO-Funktionen oder mysqli_*
-Funktionen aktualisieren.
Wenn dies nicht möglich ist, habe ich als workaround eine kleine PHP - Include-Datei erstellt, die die alten mysql_*
-Funktionen mit mysqli_*()
- Funktionen neu erstellt: fix_mysql.inc.php
Ich hatte auch das gleiche Problem mit undefined MySQL_connect (). Ich habe versucht, Änderungen in der Datei PHP.ini vorzunehmen, gab mir jedoch den gleichen Fehler .. Dann kam ich zu dieser Lösung, bei der ich meinen Code von depreciated php änderte Funktionen zu neuen Funktionen.
$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.
Ich hoffe, das wird Ihnen helfen .. Diese Lösung funktioniert für mich richtig.
Versuchen:
<?php
phpinfo();
?>
Führen Sie die Seite aus und suchen Sie nach mysql
. Wenn nicht gefunden, führen Sie Folgendes in der Shell aus und starten Sie den Apache-Server neu:
Sudo apt-get install mysql-server mysql-client php5-mysql
Stellen Sie außerdem sicher, dass Sie alle folgenden Zeilen in Ihrer Datei Apache2.conf (oder in Ihrer Datei conf.d/php.ini) unkommentiert haben
;extension=php_mysql.so
zu
extension=php_mysql.so
Meine Vermutung ist, dass Ihre PHP - Installation nicht mit MySQL-Unterstützung kompiliert wurde.
Überprüfen Sie Ihren Konfigurationsbefehl (php -i | grep mysql
). Sie sollten etwas wie '--with-mysql=shared,/usr'
sehen.
Die vollständigen Anweisungen finden Sie unter http://php.net/manual/de/mysql.installation.php . Ich würde jedoch lieber mit der von @wanovak vorgeschlagenen Lösung gehen.
Ich denke jedoch, Sie benötigen MySQL-Unterstützung, um PDO verwenden zu können.
In der php.ini-Datei
ändere das
;extension=php_mysql.dll
in
extension=php_mysql.dll
Die Frage ist mit ubuntu
gekennzeichnet, die Lösung des Kommentierens des extension=mysqli.dll
ist jedoch für Windows spezifisch. Ich bin hier verwirrt?! Ohnehin, laufen Sie als erstes <? php phpinfo ?>
und suchen Sie nach mysql*
unter Configuration
. Wenn Sie dies nicht sehen, haben Sie php-mysql
nicht installiert oder aktiviert. Also zuerst php-mysql
installieren
Sudo apt get install php-mysql
Dieser Befehl installiert php-mysql
abhängig von der bereits installierten php
, also keine Sorge über die Version !!.
Dann kommt die unix-spezifische Lösung, in der php.ini
-Datei die Zeile unkommentieren
extension=msql.so
vergewissern Sie sich, dass msql.so
in /usr/lib/php/<timestamp_folder>
, SONSTvorhanden ist.
extension=path/to/msql.so
Starten Sie anschließend die Dienste Apache
und mysql
neu. Sie sollten jetzt den Abschnitt mysql
unter Configrations
in phpinfo page
sehen.
Ich habe diese Fehlermeldung erhalten, weil das Projekt, an dem ich arbeitete, auf php 5.6 entwickelt wurde. Nach der Installation konnte das Projekt nicht auf php7.1 ausgeführt werden.
Für jeden, der Vagrant mit ubuntu/nginx verwendet, gibt es im Verzeichnis nginx (/ etc/nginx /) ein Verzeichnis namens "sites-available", das eine Datei enthält, die wie die für die Vagrant-Maschine konfigurierte URL heißt. In meinem Fall war Homestead.app. In dieser Datei befindet sich eine Zeile, die ungefähr so aussieht
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
Dort können Sie die PHP-Version auf die gewünschte Site ändern.
Googled dies, konnte aber nicht wirklich eine einfache Antwort finden, die besagte, wo sie suchen und was sie ändern sollten.
Ich hoffe, das hilft jedem ... Danke.