Zum Inhalt

PHP 7 mit alten MySQL Funktionen

Im Dezember 2015 erschien das lang ersehnte PHP 7.0 Release. Es ist das erste Major Release nach einem Jahrzehnt. Entsprechend viele Änderungen wurden eingebaut, was einigen PHP-Anwendungen zu schaffen macht. Der Support für PHP 5 läuft bereits im August 2016 aus, und längst nicht alle Entwickler haben Ihren Code angepasst.

Die MySQL Problematik

Die meisten bekannten PHP-Anwendungen wie CMS, Foren und Blogs haben ihren Code bereits für PHP7 fit gemacht. Was aber wenn mein Lieblings-System noch nicht angepasst wurde?

Keine Frage sind die alten MySQL-Funktionen in PHP längst veraltet und noch länger sind bereits zeitgemässe Alternativen verfügbar wie PDO mysql und mysqli. Dennoch haben es einige Entwickler verschlafen, hier nachzubessern.

Nun könnte man weiterhin PHP 5.6 nutzen – jedoch läuft der Support im August 2016 aus. Somit ist eine Umstellung auf PHP 7 sicher die bessere Entscheidung, auch wenn da noch etwas nachgeholfen werden muss.

mysql.so nachinstallieren

Um nun die alten MySQL-Funtionen in PHP 7 wieder verfügbar zu haben, muss die veraltete mysql-Erweiterung nachinstalliert werden.

Am besten man lässt sich mit:

<?php
phpinfo();

die aktuellen Informationen zu PHP erstmal anzeigen.

Dort findet man im Abschnitt “Core” den Eintrag “extension_dir”. Dahin werden alle Erweiterungen der aktuellen PHP-Installation abgelegt. In meinem Fall ist dies “/opt/php-7.0.5/lib/php/extensions/no-debug-non-zts-20151012”.

Danach öffnen wir ein Terminal und verschaffen uns Root-Rechte.

Nun begeben wir uns in der Konsole zum Erweiterungs-Verzeichnis:

(Pfad eventuell anpassen!)

cd /opt/php-7.0.5/lib/php/extensions/no-debug-non-zts-20151012
git clone https://github.com/php/pecl-database-mysql mysql --recursive

und laden die alte MySQL-Erweiterung mit dem Befehl git clone.

Die Daten landen nun in einem Ordner namens “mysql”, zu welchem wir gleich wechseln.

cd mysql

danach folgt die Installation:

(Pfad eventuell anpassen!)

phpize
./configure --with-php-config=/opt/php-7.0.5/bin/php-config
make
make install

Wenn die Installation erfolgeich war, sehen wir nun eine Verzeichnis-Ebene höher die Datei “mysql.so”.

cd ../
ll

Nun muss nur noch die php.ini angepasst werden, damit die Erweiterung auch geladen wird. Dazu sehen wir in der zuvor angelegten Ausgabe von phpinfo() nach welche php.ini geladen wurde. Den Pfad finden wir in der ersten Tabelle unter “Loaded Configuration File”.

Nun öffnen wir diese Datei zum editieren:

(Pfad eventuell anpassen!)

nano /opt/php-7.0.5/lib/php.ini

und fügen am besten ganz zum Ende der Datei folgendes an:

(Pfad eventuell anpassen!)

; old MySQL extension
extension=/opt/php-7.0.5/lib/php/extensions/no-debug-non-zts-20151012/mysql.so

danach den Web-Server neu starten und fertig.

service apache2 restart

Nun sehen wir in der Ausgabe von phpinfo() eine neue Tabelle mit der alten MySQL Erweiterung.

Achtung

Es wird dringen davon abgeraten die alten MySQL-Funtionen in PHP7 weiter zu verwenden. Die Erweiterung ist veraltet und es gibt keinen Support mehr! Statt dessen sollte der PHP-Code überarbeitet werden, sodass aktuelle Funktionen wie mysqli oder PDO mysql verwendet werden.

Diese Anleitung stellt lediglich eine provisorische und temporäre Lösung dar – von einem Dauerbetrieb veralteter Funktionen wird dringend abgeraten!

Weiterführende Links:

Veröffentlicht inLösungenTipp's

Neueste Beiträge

Themen: