Beim Installieren der aktuellen Updates für Drupal 6 inklusive aller möglichen Module lief ich heute bei einem Kunden in ein Problem mit dem Modul Menu Breadcrumb 6.1.2 unter PHP4, da das Modul die PHP-Funktion array_intersect_key() für die Anzeige der Konfigurationeinstellungen verwenden will und diese erst ab PHP 5.1.0 existiert.
Ein Lösungsansatz war jedoch gleich in den Kommentaren auf php.net zu finden. Dort wird auf das PEAR-Package PHP_Compat hingewiesen, welches sich jedoch auch manuell einrichten und ohne PEAR nutzen lässt (zumindest bei dem vorhandenen Problem).
Die Lösung
Einfach auf der Download-Seite die tgz-Datei "For manual installation only" herunterladen und den Inhalte des Ordners "Compat" auf Eurem Server beispielsweise ins Drupal-Verzeichnis in den neuen Ordner php/Compat kopieren.
Abschließend kann man Drupal die Nutzung der fehlenden Funktion beispielsweise durch eine Änderung der settings.php im Ordner sites/default beibringen. Ladet die Datei per FTP herunter, ergänzt ganz am Ende als neue Zeile nachfolgenden Code und ladet die Datei dann per FTP wieder hoch.:
require_once dirname(dirname(dirname(__FILE__))) .
'/php/Compat/Function/array_intersect_key.php';
Achtung: Beim Hochladen müssen zunächst die Dateirechte auf Lesen und Schreiben gesetzt werden (z.B. CHMOD 666) und danach dürft Ihr nicht vergessen, die Rechte wieder auf die ursprünglichen Rechte (nur Lesen) zu setzen!
Sicherheit
Wer noch ein bisserl mehr Sicherheit möchte, der kann im gerade angelegten Ordner php noch eine .htaccess-Datei mit nachfolgendem Inhalt hinzufügen:
order deny,allow
deny from all
Dies verhindert, daß die Dateien mittels Browser aufrufbar sind.
Fazit
Für kleinere Probleme ist das Package echt brauchbar, doch zukünftig werden diese Probleme vermehrt auftauchen und mit Drupal 7 wird wohl kein Weg an PHP5 vorbeiführen (und hoffentlich jeder Hoster dies auch endlich anbieten).



Kommentar hinzufügen