PHP 5.2.* unter SuSE 9 installieren (updated)
Einer der Nachteile bei einer Servermietung ist, dass man meist nicht selbst entscheiden kann welche Distribution genutzt wird, weil man ja auf allen möglichen Komfort inkl. Confixx oder Plesk nicht verzichten möchte und für diese Programme nicht für jede Distribution in jeder Version geeignet ist.
Nun steht man da mit seinem preiswerten Server und einem SuSE 9.1, das ja bekanntlich nur PHP 4.3.10 beinhaltet und "susemäßig" konfiguriert ist. Da ist der Safemode an, das open_basedir zeigt sonst wo hin nur nicht im Pear-Verzeichnis u.s.w.
Trotz meiner allgemeinen Angst vor dem SuSE-Apachen(wollt ihr den TOTALEN INCLUDE), habe ich es nun doch gewagt PHP 5 auf die Kiste zu spielen. Und da Plesk ja bekanntlich seinen eigenen Indianer inkl. PHP mitbringt, kann man mit "seinem" PHP machen was man möchte und dieses Tutorial auch auf Systemen ausführen wo Plesk nicht installiert ist. Confixx kann ich leider nicht bestätigen.
Nach einigem Suchen nach inoffiziellen RPMs habe ich es aufgegeben und mich dran gemacht PHP5 selbst zu übersetzen. Ich wollte einfach nicht noch mehr Unruhe im System stiften.
Bei der Installation sollte man am besten den Configure-String des "alten" PHPs übernehmen und etwas anpassen. Diesen findet man in der Ausgabe von phpinfo() im oberen Bereich.
-
./configure \
-
--prefix=/usr \
-
--datadir=/usr/lib/php \
-
--mandir=/usr/lib/man \
-
--bindir=/usr/bin \
-
--libdir=/usr/lib \
-
--includedir=/usr/include \
-
--sysconfdir=/etc \
-
--with-config-file-path=/etc \
-
--with-exec-dir=/usr/lib/php/bin \
-
--disable-debug \
-
--enable-inline-optimization \
-
--enable-sockets \
-
--enable-bcmath \
-
--disable-safe-mode \
-
--enable-sigchild \
-
--enable-mbstring \
-
--enable-soap \
-
--enable-wddx \
-
--with-mysql \
-
--with-pdo-mysql \
-
--without-pear \
-
--with-openssl \
-
--with-gd \
-
--with-jpeg-dir \
-
--with-png-dir \
-
--with-zlib \
-
--with-imap-ssl \
-
--with-imap \
-
--with-apxs2=/usr/sbin/apxs2-prefork \
Den Safemode habe ich disabled, weil er ein störendes Relikt aus alten Tagen ist (Für Diskussionen bin ich offen). Manuell die GD und die zlib hinzugefügt.
Zusätzlich könnte man das Master open_basedir setzen und ein paar andere Einstellungen machen. War ich aber zu faul zu.
Die Einstellmöglichkeiten bekommt man ja mit ./configure --help
Erwähnenswert ist, dass PEAR auf jeden Fall weggelassen werden sollte, da es sonst einen der wunderbaren Salate mit dem pear Script geben könnte(schon erlebt).
Ich habe das SuSE-Pear einfach drauf gelassen. Auch wenn der Installer mittlerweile völlig veraltet ist tut er seinen Dienst.
Wenn das Configure - Und ich gehe davon aus, dass alle Devel-Tools auf dem System installiert sind- fehlerfrei durch ist, kann man sein frisches PHP mit
make
kompilieren.
Jetzt kommt ein sehr wichtiger Punkt:
Falls das alte PHP nicht deinstalliert ist, sollte dies jetzt getan werden. Ich persönlich habe es einfach drauf gelassen und die entsprechende .so Datei einfach als .bak umbenannt(Einfach um bei einem Fehler nicht das alte PHP wieder neu installieren zu müssen).
Das Script /usr/sbin/rcapache2, das beim Start des Apachen gestartet wird, parst den Ordner /usr/lib/apache2-prefork/ nach allen vorhandenen .so Dateien und schreibt das Ergebnis in sysconfig.de/loadmodule.conf.
Nachdem
make install
ausgeführt wurde, sollte auch die libphp5.so im entsprechenden Ordner(bei mir /usr/lib/apache2-prefork/) liegen. Zu diesem Zeitpunkt darf auf keinen Fall die libphp4.so in diesem Ordner sein. Es wird mit beiden Versionen mit dieser Konfiguration nicht klappen.
Also PHP4 deinstallieren oder die Dateien umbenennen!!!
Sollte make install rum meckern, dass eine httpd-prefork.conf fehlen sollte, kann man diese einfach anlegen.
Ist die Datei angelegt, kommt es (zumindest unter SuSE 9.3) zu einer apxs-Fehlermeldung:
apxs:Error: Activation failed for custom /etc/apache2/httpd2-prefork.conf file..
apxs:Error: At least one `LoadModule' directive already has to exist..
Man kann dort einfach einen LoadModule-Befehl einfügen(LoadModule php5_module /usr/lib/apache2-prefork/libphp5.so) oder die Fehlermeldung einfach mit
-
make -i install
überspringen.
Da nun alle Konfigurationen um das Paket php4 entweder deinstalliert oder unbrauchbar gemacht wurden, gibt es nun auch keine Directory-Indexe und Application Types mehr.
Die standen nämlich in /etc/apache2/conf.d/php4.conf.
Also sollte man
-
AddType application/x-httpd-php .php
-
AddType application/x-httpd-php .php3
-
AddType application/x-httpd-php .php4
-
AddType application/x-httpd-php .php5
-
AddType application/x-httpd-php-source .phps
-
DirectoryIndex index.php
-
DirectoryIndex index.php3
-
DirectoryIndex index.php4
-
DirectoryIndex index.php5
Am besten irgendwo hin kopieren wo man es wiederfindet. Ich hab`s mal in die "default-server.conf" geschrieben. Da kommt es auch zu hause an.
Nun sollte man den Apachen mit /etc/init.d/apache2 restart neu start und am besten keine Fehlermeldung bekommen.
Fertig ist das frisch gebackene PHP5 unter SuSE 9.
on Juli 6th, 2007 at 01:48
Hallo,
hast du die Installation auch mit der libxml-Option “–with-libxml-dir=/usr/lib” (mit dem für dein System richtigem Pfad) hinbekommen?
Ich habe Probleme mit der vorhandenen Version von libxml2 auf einem SuSE 9.1 (besser SLES 9) - System. PHP 5.2 setzt eine Version > 2.6.11 von libxml2 voraus - vorhanden ist aber nur eine Version 2.6.7. Der Versuch, auf eine neuere Version von libxml2 zu gehen, ergab Probleme an anderer Stelle.
on Juli 6th, 2007 at 09:53
Ich kenne das Problem unter SuSE 9.1. Heißt “andere Stelle” ein Problem mit der libheimdal? Ich kann mich an ein solches Problem erinnern. Wenn die libheimdal ebenfalls erneuert wird, sollte es gehen. Allerdings fische ich das gerade aus meinem Gedächtnis und weiß nicht ob das 100% richtig ist.
on Juli 6th, 2007 at 15:13
wenn du mir sagst wo es kracht kann ich mich vielleicht erinnern, ich glaube nämlich heimdal war falsch
. Hat wphl eher nix mit Kerberos zu tun. Sorry.