PHP4 und PHP5 auf Debian Sarge
Nachdem die Prfung nun fast eine Woche rum ist und ich versuche, möglichst wenig an die Ergebnisse zu denken (man kann sich ganz schön verrückt machen…), nutze ich diesen Eintrag für Notizen zu einem etwas technischerem Thema.
Ich versuche gerade PHP4 und PHP5 auf dem Apache2 einer Debian Sarge Installation parallel zu installieren.
Da die PHP5 Pakete leider unbedingt PHP4 ersetzen wollen, muss ich zu hrteren Mitteln greifen und PHP5 selbst kompilieren. Also von http://www.php.net die aktuelle Version heruntergeladen und entpackt.
Dann mit
./configure—prefix=/usr/local/php5—with-apx2=/usr/bin/apxs2
—with-libxml-dir=/usr/lib—with-zlib—with-zlib-dir=/usr/lib
—with-mysql—with-gd—enable-soap—enable-sockets
das Configure-Skript angestoen, welches den Kompiliervorgang vorbereiten soll.
Leider läuft dies nicht direkt problemlos durch. Es erscheint die Fehlermeldung
Configuring extensions
checking whether to enable LIBXML support… yes
checking libxml2 install dir… /usr/lib
configure: error: xml2-config not found. Please check your libxml2 installation.
Also installiere ich mit
apt-get install libxml2-dev libxml2-utils
die beiden libxml2 Pakete, welche sich noch nicht auf meinem Rechner befinden. Und schon luft der obige Befehl ohne zu murren durch.
Es folgt die Kommandoabfolge
- make clean
- make
- make install
- cd ..
..und schon ist PHP5 installiert. Nun haben wir noch die Konfiguration und die Integration in den Apache vor uns.
Die php.ini Datei fr PHP5 mssen wir im Verzeichnis _ /usr/local/php5/lib/ _ ablegen.
Per Default exisistiert die _ php.ini _ nicht, d.h. es werden die Defaulteinstellungen von PHP 5 verwendet; Beispiele für
php.ini -Dateien befinden sich beim Quellcode.
Ich kopiere also php.ini-dist nach /usr/local/php5/lib/php.ini und passe sie meinen Anforderungen an.
Was nun noch bleibt, ist, den Apache zu konfigurieren. Leider bin ich dabei auf die Aussage gestoen, das man nicht beide Module gleichzeitig im Apache betreiben kann. Hchstens eine also Vollwertiges Modul und die andere als CGI-Modul. Na das ich dochmal was, dann versuchen wir es eben so.
Zum Einrichten des Apache2 bearbeite ich die Datei _/etc/apache2/sites-available/default_ wie folgt:
Bei der Options Eigenschaft fge ich ExecCGI hinzu und auerdem die beiden Zeilen
Action php5-cgi /usr/local/php5/bin/php
AddHandler php5-cgi .php5
ein.
Man sollte darauf achten, das das action-Modul des Apache auch geladen wird
Um die Konfiguration zu testen, erstellt man auf dem Webserver eine Datei mit dem Inhalt
<?php
phpinfo();
?>
und ruft diese, nachdem der Apache mit
/etc/init.d/apache2 restart
neu gestartet wurde, mit einem Webbrowser auf.
Erscheint die PHP Info Seite mit der Versionsangabe 5.x, so war die Installation wohl erfolgreich und man kann nun endlich die vielen neuen Features von PHP5 erkunden.
In diesem Sinne, einen schnen Abend noch
Am 30. November 2004 um 07:43 Uhr
Hi Markus!
So nervös?
Ziemlich abgefahrenes Projekt, was du da versuchst
Am 1. Dezember 2004 um 09:25 Uhr
sooo abgefahren ist das garnicht – es hat sogar funktioniert
ja, klar bin ich nervös. mir geht das warten auf die ergebnisse langsam auf den keks…
bist du nicht neugierig?
Am 1. Dezember 2004 um 13:48 Uhr
Ich dachte du bist niiieee neugierig?
Am 5. Dezember 2004 um 13:52 Uhr
schlichting, du bist ein FREAK!!
Am 17. Dezember 2004 um 11:31 Uhr
In PHP 4 und 5 wurden verschiedene Sicherheitslücken gefunden, wie an verschiedenen Orten berichtet wurde. Ich habe das mal zum Anlaß genommen, das neue Release von PHP5 zu testen. Ironischerweise gibt es PHP5 für debian/stable, aber nicht für debian/un
Am 7. Februar 2005 um 19:36 Uhr
Matt Croydon beschreibt in seinem Blog, wie Apache 2 und PHP 5 mittels Binärpaketen via apt unter Sarge zum Laufen gebracht werden können.
http://www.postneo.com/2004/12/30/apache2-and-php5-in-10-minutes
Bei genauerem Hinsehen im Test-Repository unter
http://people.debian.org/~dexter
ist das auch unter Sid (worfür die PHP5-Pakete eigentlich gedacht sind) und sogar Woody möglich.
PHP5-Backports für Woody gibt’s auch im DotDeb-Repository unter
http://dotdeb.org/
Ob und wie weit die allerdings mit den Apache 2-Builds des offiziellen Repositories vereinbar sind käme auf einen Test an.
An sich ist wohl die erstere Quelle des Debian-Entwicklers zu bevorzugen.
Am 16. Februar 2005 um 17:47 Uhr
Hi,
also erstmal finde ich super, dass Du das hier veröffentlich hast. Ich habe das gleiche auf meinem Server vor. Ich möchte PHP4 als Modul (ist bereits alles eingerichtet) und nun parallel PHP5 als CGI.
Leider hab ich Apache 1.3 und weiß nicht, ob ich Deine Einstellungen so übernehmen kann. Ich habe das versucht, aber es gibt eine Fehlermeldung beim Restart von Apache. Kannst Du mir nochmal genau schreiben, was Du in der Apache-Konfig eingetragen hast? Das wäre wirklich super nett.
Danke,
Reo
Am 16. Februar 2005 um 17:51 Uhr
Die config vom Apache 1.3 zu 2.0 unterscheidet sich zum Teil doch erheblich, so dass man das leider nicht so ohne weiteres übernehmen kann. Wie genau lautet die Fehlermeldung denn?
Am 27. Februar 2005 um 13:19 Uhr
Im Moment nutzen viele Anbieter die Möglichkeit und betreiben PHP5 parallel zu PHP4. Der Trick ist, dass man PHP4 als mod_php und PHP5 via cgi installiert. Je nach Dateiendung entscheidet der Webserver, welche Version er zum Parsen des Quelltextes nut…
Am 27. Februar 2005 um 16:31 Uhr
Hallo,
sorry, dass ich erst jetzt antworte, hatte gehofft, dass ich bei Antwort eine eMail bekomme, aber das wird wohl hier nicht unterstützt.
Also ich habe folgende Zeilen in meinem Apache hinzugefügt:
Action php5-cgi /usr/local/php5/bin/php
AddHandler php5-cgi .php5
Das habe ich von oben übernommen.
Meine Fehlermeldung lautet:
/usr/sbin/apachectl restart: configuration broken, ignoring restart
/usr/sbin/apachectl restart: (run ‚apachectl configtest‘ for details)
apachectl configtest gibt an:
Warning: DocumentRoot [/html/] does not exist
Syntax OK
Das ist SEHR merkwürdig, weil ich wirklich nur diese beiden Zeilen eingefügt habe und sonst nicht geändert habe. Wenn ich die Zeilen wieder rausnehme, dann geht es wieder.
Vielleicht hat das mit meiner vhosts.conf zu tun. Aber das weiß ich leider nicht.
Hat wer nen Tipp, wie ich das hinbekomme?
Am 27. Februar 2005 um 16:35 Uhr
Ja, genau das möchte ich auch hinbekommen. Nicht als Hoster, einfach nur für mich selbst auf meinem Server.
*.php und *.php4 mit PHP4 (Modul) und
*.php5 mit PHP5 (also CGI)
Am 27. Februar 2005 um 16:48 Uhr
Hallo Leute,
also ich bin über google auf die Seite aufmerksam geworden. Ich habe bereits ein Problem beim Kompilieren.
Also ich habe PHP5.0.3 von der Webseite gezogen (php.net). Nun habe ich es auf meinem Server unter
/usr/src/php5/php-5.0.3 entpackt.
Hier möchte ich nun folgendes machen:
./configure –prefix=/usr/local/php5 –with-apx2=/usr/bin/apxs2 –with-libxml-dir=/usr/lib –with-zlib –with-zlib-dir=/usr/lib –with-mysql –with-gd-enable-soap –enable-sockets
Fehlermeldung:
loading cache ./config.cache
checking host system type… i686-pc-linux-gnuoldld
checking for gcc… no
checking for cc… no
configure: error: no acceptable cc found in $PATH
Was bedeutet das und was kann ich da machen?
Gruß,
Mike
Am 27. Februar 2005 um 17:05 Uhr
Du scheinst keinen Kompiler installiert zu haben
Dann wir dauch das mit dem kompilieren schwierig
Du solltest also einen C++ Kompiler installieren.
Am 27. Februar 2005 um 17:06 Uhr
Versuchst du es immernoch mit dem Apache 1.3 ? Wahrscheinlich liegt hier das Problem, Apache 1.3 verwendet in seinen Configs eine andere Syntax als Apache2.
Am 27. Februar 2005 um 17:22 Uhr
Hmm, peinlich. Sorry, ganz schnell meine Frage wieder vergessen. Sowas dachte ich mir, nachdem ich gepostet habe auch. Also muss ich wohl erst einmal nachdenken und dann schreiben.
Habe nun aber nen Compiler installiert, bekomme nun ne andere Fehlermeldung, die sagt mir aber nichts (auch beim 2ten Mal nachdenken)
loading cache ./config.cache
checking host system type… i686-pc-linux-gnu
checking for gcc… gcc
checking whether the C compiler (gcc ) works… yes
checking whether the C compiler (gcc ) is a cross-compiler… no
checking whether we are using GNU C… yes
checking whether gcc accepts -g… yes
checking whether gcc and cc understand -c and -o together… yes
checking how to run the C preprocessor… gcc -E
checking for AIX… no
checking if compiler supports -R… no
checking if compiler supports -Wl,-rpath,… yes
checking for re2c… exit 0;
checking for ranlib… ranlib
checking whether ln -s works… yes
checking for mawk… mawk
checking for bison… no
checking for byacc… no
configure: warning: You will need bison if you want to regenerate the PHP parsers.
checking for flex… lex
checking for yywrap in -ll… no
checking lex output file root… ./configure: lex: command not found
configure: error: cannot find output from lex; giving up
Was ist „lex“?
Am 27. Februar 2005 um 17:42 Uhr
Ich hatte das Problem auch. Habe aber eine Lösung unter google.de gefunden.
also Du musst flex installieren (z.B. mit apt-get install flex)
Dann geht alles.
Am 2. März 2005 um 10:00 Uhr
interessante fragen. viele tauglich für den „zettel & stift award“, d.h. es wäre für diese sicherer zettel&stift anstatt elektronische medien zu nutzen,
http://people.debian.org php5/sid-old Packages ist temporär down oder hat sich die URL geändert? bin zu faul zum nachlesen (wie einige hier bei simpleren fragen)
Am 26. März 2005 um 20:27 Uhr
Hey,
wenn ich /etc/init.d/apache2 restart ausführe dann sagt mir die Console
Forcing reload of web server: Apache2.
habe auch die Installation so gamacht wie es hier steht aber unter info.php kommen nur die alten sachen
Am 26. März 2005 um 20:44 Uhr
Am 27. März 2005 um 01:31 Uhr
und wenn du die datei info.php5 nennst?
wenn du wiklich alles so gemacht hat wie hier angerissen, dann zeigen .php Dateien php4, und nur .php5 dateien php5
Am 6. April 2005 um 15:15 Uhr
Hallo,
schaut mal unter
http://www.linuxhatesme.com
ich habe auch mal versucht eine sehr ausführliche Anleitung zu schreiben, bll hat ja jemand intersse.
Am 13. Mai 2005 um 16:42 Uhr
ich versuche auch auf Debian Sarge PHP5 zu kompilieren aber bekomme den Fehler dass dei mysql headers nicht gefunden werden. im irc weiß keiner Bescheid, die Packages habe ich alle installiert glaube ich – was brauche ich genau?!
Am 8. Juli 2005 um 19:03 Uhr
Ich halts nicht aus! Ich bekomme immer ein „Internal Server Error“ wenn ich versuche eine .php5 aufzurufen.
Im Log habe ich dann folgendes:
[Fri Jul 08 20:55:13 2005] [error] [client 213.23.221.216] Premature end of script headers: php
Das habe ich in der apache2.conf eingetragen:
ScriptAlias /php5/ /usr/local/php5/bin/
AddType application/x-httpd-php5 .php5
Action application/x-httpd-php5 /php5/php
ScriptAlias deshalb, da er sonst php im vhost sucht.
Kompiliert hat er ohne Fehler oder errors.
Am 9. Juli 2005 um 12:08 Uhr
hi,
was genau hast du denn versucht?
PHP5 als normales Modul oder als CGI einzubinden? Soll PHP4 noch laufen?
Wie sieht das scriptfile aus, das du versuchst, auszuführen?
Am 10. Juli 2005 um 20:47 Uhr
Hallo Mike,
ich glaube das bedeutet, dass Du keinen C-Compiler installiert hast. Versuch mal apt-get install gcc.
Du wirst vermutlich auch Sachen wie libc6-dev, bison, flex, usw. brauchen.
Grüße
snoop
Am 8. September 2005 um 19:21 Uhr
Frage:
Unter Apache2 gibt es bei mir kein „Action“ Handler… welches Modul muss ich dafür laden damit das funktioniert?
Ich hab derzeit einen Apache 1.3 mit php4 / 5 als CGI. Damit kann ich je nach virtualhost ansagen, ob version 4 oder 5 benutzt werden soll. Sehr coole Sache
Am 15. September 2005 um 11:42 Uhr
Ich betreibe PHP 4 und PHP5 parallel, beide als FastCGI, auf unserem Firmenserver. Kann man halten wie man will, unsere Mitarbeiter stellen keine Geschwindigkeitseinbußen fest.
Wenn der Apache richtig konfiguriert wurde, kann man parallel zwischen beiden PHPs wählen OHNE ÄNDERUNGEN am Dateiende vorzunehmen, d.h. kein *.php4 bzw *.php5 – Versionschaos gibt es auch nicht!!!
Wäre das nicht auch sinnvoller für euch den Apachen so zu konfigurieren?
Sind recht umständlich eure genannten Wege, finde ich zumindest.
Am 15. September 2005 um 11:45 Uhr
Hi Sledge,
Du schreibst
„Wenn der Apache richtig konfiguriert wurde, kann man parallel zwischen beiden PHPs wählen OHNE ÄNDERUNGEN am Dateiende vorzunehmen“
Worüber steuerst Du das dann? Über virtual Hosts? Wie wird entscheiden, welche PHP Version zum Zuge kommt?
Am 23. September 2005 um 06:51 Uhr
Am 27. September 2005 um 14:50 Uhr
Sorry für die späte Antwort.
Es ist im Prinzip ganz einfach. Du installierst den Apache2 Server und in der httpd.conf legst du Regeln an wie der Apache mit einer *.php umzugehen hat.
Standardmäßig soll er mit php5 öffnen, als Beispiel.
Normalerweise steht der Wert in diesem Sector bei „Allow Override None oder AuthConf“. Diesen Wert setzt auf All, also Allowoverride All.
Im Webhost hast Verzeichnisse, die sehen z.B, so aus
/seite1
/seite2
…
/seite1 soll mit standard-php5 geöffnet werden, da brauchst keine Änderung vorzunehmen.
/seite2 mit php4
Da *.php normalerweise mit php5 geöffnet wird, musst du die Regelung standard *.php = php5 in der httpd.conf übergehen, deswegen muss Allowoverride auf All gesetzt werden.
Du erstellst nun eine .htaccess Datei, aus der hervorgeht das *.php mit php4 geöffnet werden soll IN DIESEM Stammverzeichnis!!!.
Diese .htaccess legst in /seite2 und alle *.php werden mit PHP4 in seite2/… usw geöffnet.
Du kannst so parallel deine Skripte auf PHP4 und PHP5 testen mit 2 Browsern, Tabs – wie auch immer
Am 27. September 2005 um 15:01 Uhr
Nachtrag:
so sieht eine .htaccess bei mir aus:
#
AddHandler php4-cgi .php
AddType application/x-httpd-php .php
#
Am 8. Juni 2006 um 14:51 Uhr
hallo!
ich habe das selbe problem. php4 läuft als modul, php5 soll über cgi laufen. bei php5 kommt aber immer eine 404 fehlermeldung bzw. manchmal nur der php code.
lg.
Am 8. Juni 2006 um 15:29 Uhr
Im error-log erscheint übrigens folgende fehlermeldung: „[Thu Jun 08 17:30:18 2006] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/web1/html/usr“
Am 12. November 2006 um 16:20 Uhr
Am 26. April 2007 um 08:35 Uhr
Wie kann man das eigentlich wieder deinstallieren??
LG
Am 11. Juli 2007 um 08:58 Uhr
Bei der gestern installierten Version muss man das php-cgi Binary benutzen:
z.B.:
ScriptAlias /cgi-php5/ /usr/local/php5/bin/
AddType application/x-httpd-php5 .php5
Action application/x-httpd-php5 /cgi-php5/php-cgi
AllowOverride None
Options +ExecCGI +FollowSymLinks
Order allow,deny
Allow from all
Am 2. März 2009 um 13:44 Uhr
Gut!