mynethome.de

29. November 2004 um 21:24 Uhr

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 :P

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 :)

37 Reaktionen zu “PHP4 und PHP5 auf Debian Sarge”

  1. Gravatar Icon Nils

    Hi Markus!
    So nervös?
    Ziemlich abgefahrenes Projekt, was du da versuchst :-)

  2. Gravatar Icon Markus

    sooo abgefahren ist das garnicht :P – 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?

  3. Gravatar Icon Kruemel

    Ich dachte du bist niiieee neugierig?

  4. Gravatar Icon Robin

    schlichting, du bist ein FREAK!!

  5. Gravatar Icon in der black box

    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

  6. Gravatar Icon Moritz

    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.

  7. Gravatar Icon Reo

    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

  8. Gravatar Icon Markus

    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?

  9. Gravatar Icon WebhostingTech

    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…

  10. Gravatar Icon Reo

    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?

  11. Gravatar Icon Anonymous

    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)

  12. Gravatar Icon Mike

    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

  13. Gravatar Icon Markus

    Du scheinst keinen Kompiler installiert zu haben :)
    Dann wir dauch das mit dem kompilieren schwierig :D
    Du solltest also einen C++ Kompiler installieren.

  14. Gravatar Icon Markus

    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.

  15. Gravatar Icon Mike

    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“?

  16. Gravatar Icon Anonymous

    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.

  17. Gravatar Icon MrLinux

    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)

  18. Gravatar Icon Tobias

    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

  19. Gravatar Icon Anonymous
  20. Gravatar Icon Markus

    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

  21. Gravatar Icon nils

    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.

  22. Gravatar Icon Peter

    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?!

  23. Gravatar Icon Seb

    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.

  24. Gravatar Icon Markus

    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?

  25. Gravatar Icon snoop

    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

  26. Gravatar Icon Lopez

    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 :)

  27. Gravatar Icon Sledge

    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.

  28. Gravatar Icon Markus

    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?

  29. Gravatar Icon Django
  30. Gravatar Icon Sledge

    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 ;)

  31. Gravatar Icon Sledge

    Nachtrag:

    so sieht eine .htaccess bei mir aus:
    #
    AddHandler php4-cgi .php

    AddType application/x-httpd-php .php
    #

  32. Gravatar Icon harald

    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.

  33. Gravatar Icon harald

    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“

  34. Gravatar Icon Anonymous
  35. Gravatar Icon Clemens

    Wie kann man das eigentlich wieder deinstallieren??

    LG

  36. Gravatar Icon chk

    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

  37. Gravatar Icon berlin

    Gut!

Einen Kommentar schreiben


Gravatar unterstützt

mynethome.de wird erstellt mit WordPress
Beiträge (RSS) und Kommentare (RSS)

(c) 2005 - 2023 Markus Schlichting - Mastodon