it-swarm.com.de

PHP/Apache: PHP Schwerwiegender Fehler: Aufruf der nicht definierten Funktion mysql_connect ()

Ich habe MySQL (5.5.23 Community Server), Apache (2.2) und PHP (5.3.13) auf einem Fedora 15-Computer (64-Bit). Jeder arbeitet ohne Probleme.

Ich dachte, dass PHP für die Arbeit mit MySQL konfiguriert/kompiliert wurde, aber wenn ich versuche, eine PHP - Webseite zu laden, die einen MySQL-Aufruf ausführt, erhalte ich den oben genannten schwerwiegenden Fehler (im Apache-Fehlerprotokoll ). PHP funktioniert zwar für sich alleine, über Apache und auf der Befehlszeile.

Wenn ich php -i von der Kommandozeile aus laufe, werden sicher alle MySQL-Bits angezeigt. Wenn ich jedoch eine Seite mit phpinfo () lade, werden keine MySQL-Module erwähnt.

Ich habe auch versucht, "extension = mysql.so" in php.ini zu kommentieren, aber PHP beschwert sich dann mit "PHP Startup: Dynamische Bibliothek '/usr/lib64/php/modules/mysql.so'." kann nicht geladen werden (obwohl das Modul dort nicht vorhanden ist) Ich bin mir nicht ganz sicher, ob diese Zeile unkommentiert sein muss oder nicht. [Korrektur: Der angegebene Fehler war tatsächlich auf einen Tippfehler zurückzuführen, aber das Ausführen von der Befehlszeile zeigt, dass das Modul ohnehin bereits geladen ist - da ist es eine Warnung von PHP, die dies sagt.]

Ich habe auch SELinux deaktiviert. Apache mehrmals gestoppt/neu gestartet; hat MySQL-Devel geklaut, falls es irgendeinen Unterschied machte; und es scheint, jedes andere mögliche Ding.

Wenn ich ein kleines PHP Testskript von der Kommandozeile aus ausführe, um auf die MySQL-Datenbank zuzugreifen, funktioniert es problemlos, sodass PHP MySQL kennt, aber wenn es unter Apache läuft, scheint es Ich habe keine Ahnung, dass MySQL überhaupt existiert.

Ich habe seit Monaten versucht, dieses Problem zu lösen, und habe anscheinend alles versucht, aber nichts scheint zu funktionieren.

Ich habe nichts dagegen, PHP neu installieren zu müssen, wenn es wirklich notwendig ist, wenn jemand die korrekte Art und Weise der Konfiguration/Kompilierung mit MySQL-Unterstützung demonstriert, damit ich es unter Apache zum Laufen bringen kann, obwohl ich idealerweise dies kann Ich würde es vorziehen, die bestehende Installation zum Laufen zu bringen.

Vielen Dank im Voraus für Ihre Hilfe!

25
Cheddar

Für den Fall, dass jemand anderes damit konfrontiert ist, hat PHP keinen Zugriff auf die MySQL-Client-Bibliotheken. Einen MySQL-Server auf dem System zu haben, ist nicht die richtige Lösung. Fix für Ubuntu (und PHP 5): 

Sudo apt-get install php5-mysql

Nach der Installation des Clients sollte der Webserver neu gestartet werden. Falls Sie Apache verwenden, sollte Folgendes funktionieren:

Sudo service Apache2 restart
63
andreimarinescu

Beachten Sie, dass die Funktion mysql_connect() ab PHP 5.5.0 nicht mehr empfohlen wird und in PHP 7 vollständig entfernt wird

Weitere Informationen finden Sie in der php Dokumentation :

Zitat:

Warnung
Diese Erweiterung wurde in PHP 5.5.0 nicht mehr unterstützt und in PHP 7.0.0 entfernt. Stattdessen sollte die Erweiterung MySQLi oder PDO_MySQL verwendet werden. Weitere Informationen finden Sie auch in MySQL: Auswählen eines API-Leitfadens und verwandter FAQ. Alternativen zu dieser Funktion sind:
* mysqli_connect ()
* PDO :: __ construct () 

16
Tim Penner

Ich hatte das gleiche Problem und musste auf das php-Handbuch verweisen, das mir mitteilte, dass die mysql- und mysqli -Erweiterungen libmysql.dll zum Laden benötigen. Ich habe unter C:\Windows\System32 (Windows 7) danach gesucht und konnte es nicht finden. Also lade ich es hier herunter und platzierte es in meinem C:\Windows\System32. Ich habe Apache neu gestartet und alles hat gut funktioniert. Ich habe 3 Tage gebraucht, um herauszufinden, hoffe es hilft.

2
che-azeh

Wie wäre es mit

Sudo yum installieren Sie PHP-MySQL

oder

Sudo apt-get install php5-mysql

0
Rahim Khoja

Das Apache-Modul PHP kann aus irgendeinem Grund nicht die php.ini-Datei als CLI-Version verwenden, die ich mir genauer ansehen möchte:

  • Alle Unterschiede in den .ini-Dateien, die sich über eine Webseite zwischen php -i und phpinfo() unterscheiden *
  • Wenn es keine Unterschiede gibt, schauen Sie sich die Berechtigungen von mysql.so und der .ini-Dateien an, aber ich denke, dass Apache diese als root-Benutzer analysiert

Um hier wirklich klar zu sein, suchen Sie nicht nach php.ini-Dateien im Dateisystem. Schauen Sie sich an, was PHP sagt, dass es sich um Dateien handelt

0
James C