it-swarm.com.de

Undefinierte Funktion mysql_connect ()

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.

50
user1765369

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
41
wanovak

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 ()

47
Sarcastron

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.

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

30
kujiy

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

27
rubo77

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.

7
apurva sharma

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
5
fortune

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.

4
Muc

In der php.ini-Datei

ändere das 

;extension=php_mysql.dll

in

extension=php_mysql.dll
4

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.

1
Dota2

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.

0
freifede