PHP Downgrade: 5.3 auf 5.2 zurücksetzen

Gestern ist mir ein dummer Fehler passiert: auf einem CentOS-Server mit Plesk 9.2 und PHP 5.2.10 vom Remi-Repository habe ich, auch über das Remi-Repository, versehentlich ein PHP-Upgrade gemacht. Die dann vorhandene Version 5.3 ist aber leider total unkompatibel mit Plesk und so einigen Anwendungen. Sporadisch kam einfach mal bei jeden PHP-Skripts nur eine weiße Seite zurück, mit der Fehlermeldung von Apache:

PHP Warning: Unknown: open_basedir restriction in effect. File(/var/www/[...]/index.php) is not within the allowed path(s): (h\xc3\x15\x90+\xe4rr\n) in Unknown on line 0
PHP Fatal error: Unknown: Failed opening required '/var/www/[...]/index.php' (include_path='.:') in Unknown on line 0, referer: http://[...]

Damit konnte man erst mal nicht so viel anfangen, vor allem weil der Fehler nicht immer auftrat.

Die Lösung war einfach: PHP wieder auf PHP5.2.10 Downgraden. Aber ein Downgrade mit yum ist zunächst nicht vorgesehen. Auch das yum-Modul AllowDowngrade war dafür nicht geeignet. So weit auch noch kein Problem: PHP löschen, PHP installieren und 5.3 verbieten, zum Glück ist die 5.2 ja noch im Repository. Ging aber auch nicht: hätte ich PHP gelöscht, wären viele andere Pakete auch gelöscht worden und das alles korrekt und funktionierend wieder herzustellen wäre zu viel Arbeit + zu viel Ausfallzeit.

Also zur gefährlicheren Variante gegriffen: rpm –nodeps. Nicht wirklich zu empfehlen, aber hier ging es leider nicht anders.

Lösung:

-> Gegebenenfalls nachsehen, was von PHP alles in Version 5.3 installiert ist, z.B. mit
yum list installed php* | grep 5.3

PHP-Pakete mit RPM löschen:
rpm -e php-mbstring php-pdo php-cli php-common php-imap php-xml php-mysql php-gd --nodeps

und dann schnell hinterher mit yum nachinstallieren:
yum --enablerepo=remi --exclude=php*5.3* install php php-mbstring php-pdo php-cli php-common php-imap php-xml php-mysql php-gd
service httpd restart

Damit sollten wieder die 5.2er Versionen installiert sein (keine Garantie!!! Kann natürlich auch mächtig schiefgehen!)

Wer ebenfalls das Remi-Repo hat, und auch keine Lust hat auf PHP5.3, kann es in der /etc/yum.conf verbieten:

[main]
cachedir=/var/cache/yum
keepcache=0
[...]
exclude=php*5.3*
# Note: yum-RHN-plugin doesn't honor this.
metadata_expire=1h
[...]

Viel Erfolg ;)

Posted in Linux at September 4th, 2009. 2 Comments.