[Tutorial] PHP für Apache 1.x.x kompilieren und installieren

Diskutiere mit über: [Tutorial] PHP für Apache 1.x.x kompilieren und installieren im Web-Programmierung Forum

  1. moses_78

    moses_78 Thread Starter MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    Registriert seit:
    08.04.2005
    PHP 5.1.2 für Apache 1.x.x kompilieren und Installieren

    Vorbereitung

    Dieses Tutorial soll auch nicht-Konsolenjunkies auf einfachstem Weg die In-
    stallation eines PHP-Moduls für den Apache 1.x.x (der von Hause aus vorin-
    stalliert ist) erklären.

    Hinweis: Eine Raute(#> ) vor den Befehlen bedeutet, dass man root-Rechte
    benötigt, um sie auszuführen. Ein Dollarzeichen bedeutet, dass die Rechte
    eines gewöhnlichen Benutzers ausreichen. Root-Rechte erlangt man mit "sudo
    <Befehl>" oder "su root".

    Die Sourcen (Version 5.1.2, Stand 26. 2. '06) werden erst einmal ins Pro-
    gramme-Verzeichnis kopiert:
    Code:
    $> cd /Applications
    $> curl -C - -O http://de3.php.net/distributions/php-5.1.2.tar.bz2
    Ich würde liebend gerne "wget" benutzen, weil es Umleitungen beherscht,
    und damit besser zum Saugen von den Sourceforge-Mirrors geeignet ist, es
    ist jedoch leider nicht vorinstalliert.

    Der sogenannte "Tarball" muss nun entpackt werden:
    Code:
    $> tar xjvf php-5.1.2.tar.bz2
    $> cd php-5.1.2
    Die PHP-Konfigurationsdatei wird jetzt mit
    Code:
    #> cp php.ini-dist /etc/php.ini
    nach /etc kopiert.

    Hinweis: Wenn schon ein andere PHP-Version in Form eines Paketes von
    entropy.ch installiert wurde, muss sie noch aus der httpd.conf entfernt wer-
    den:
    Code:
    #> vi /etc/httpd/httpd.conf
    Hier muss alles von "# begin entropy.ch PHP module activation" bis "# end
    entropy.ch PHP module activation" gelöscht werden. Dieser Bereich befin-
    det sich ganz am Ende der Datei. Nachdem man mit "i" in den Eingabemod-
    us gelangt ist, und diesen Teil gelöscht hat, speichert man ihn mit <Escape>
    - ":" - "wq" - <Enter> (nacheinander, bitte).
    Desweiteren kann noch der Ordner "/usr/local/php5" mit
    Code:
    #> rm -r /usr/local/php5 
    gelöscht werden. Wenn man den Apache-Webserver nun mit
    Code:
    #> apachectl restart
    neu startet und ein PHP-Script aufruft, sollte man nur den Quelltext zu se-
    hen bekommen.

    Mit
    Code:
    $> ./configure --help
    kann man sich eine Liste aller möglichen Flags ansehen, von denen wir je-
    doch nur einen Bruchteil benötigen.
     
    Zuletzt bearbeitet: 26.02.2006
  2. moses_78

    moses_78 Thread Starter MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    Registriert seit:
    08.04.2005
    Installation der benötigten Bibliotheken

    Leider müssen noch die aktuellsten Bibliotheken, die in PHP eingebunden
    werden sollen, gesaugt und installiert werden. Wir fangen mit libxml an,
    indem wir ein weiteres Terminalfenster öffnen und nacheinander folgendes
    eingeben:

    Für libxml:
    Code:
    $> cd $HOME
    $> mkdir php_libs
    $> cd php_libs
    $> curl -C - -O http://xmlsoft.org/sources/xml/libxml2-2.6.11.tar.gz
    $> tar xzvf libxml2-2.6.11.tar.gz
    $> cd libxml2-2.6.11
    $> ./configure --prefix=/usr/local/lib/libxml
    $> make
    #> make install
    Für libpng:
    Code:
    $> cd ..
    $> curl -C - -O http://heanet.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.8-config.tar.gz
    $> tar xzvf libpng-1.2.8-config.tar.gz
    $> cd libpng-1.2.8-config
    $> ./configure --prefix=/usr/local/lib/libpng
    $> make
    #> make install
    freetype2:
    Code:
    $> cd ..
    $> curl -C - -O http://download.savannah.gnu.org/releases/freetype/freetype-2.1.10.tar.bz2
    $> tar xjvf freetype-2.1.10.tar.bz2
    $> cd freetype-2.1.10
    $> ./configure --prefix=/usr/local/lib/freetype
    $> make
    #> make install
     
    Zuletzt bearbeitet: 29.03.2006
  3. moses_78

    moses_78 Thread Starter MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    Registriert seit:
    08.04.2005
    Kompilierung & Installation

    Das configure-Script produziert das Makefile, mit dem PHP schließlich als
    Apache-Modul kompiliert wird. Hier sind die Flags, mit denen das configure-
    Script nach Einhaltung der oben geschilderten Schritte ohne Mosern das
    Makefile erstellen sollte:
    Code:
     $> ./configure --prefix=/usr/local/php --with-apxs=/usr/sbin/apxs 
    --with-libxml-dir=/usr/local/lib/libxml --with-zlib --enable-bcmath 
    --with-bz2 --enable-calendar --with-curl --enable-ftp --with-gd 
    --with-png-dir=/usr/local/lib/libpng --with-freetype-dir=/usr/local/lib/freetype 
    --enable-mbstring --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp 
    --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap 
    --enable-sockets --with-pear=/usr/local/php/pear
    Ich habe selbstverständlich nicht alle Erweiterungen einkompiliert, was auch
    undenkbar ist, jedoch alle Module, die ich für wichtig erachte, wie MySQL, GD,
    Soap oder ftp.

    Es ist nicht ungewöhnlich, dass "configure" fehlschlägt; in diesem Fall muss
    man weiter herumexperimentieren, ggf. Bibliotheken nachinstallieren, Doku-
    mentationen wälzen und googeln, ich habe mich aber bemüht, eine Konfigu-
    ration zu Finden, die an den meisten Systemen beim ersten Versuch funk-
    tionieren sollte, und dieses Tutorial nochmal an einem vor kurzem eingerich-
    teten 10.4er-System getestet.

    Anmerkungen:
    - "--with-apxs" ist das Flag, das PHP anweist, zur Installation des PHP-Mo-
    duls das apxs-Script zu verwenden. Bei diesem Script handelt es sich um
    ein Perl-Script, das die httpd.conf selbstständig editiert und uns weiteres
    Editieren der httpd.conf erspart. Wer das PHP für einen Apache 2.x instal-
    lieren will, muss "--with-apxs2=/pfad/zum/apache-ordner/bin/apxs2" an-
    geben.

    - Das "with-mysql"-Flag erwartet in dem angegebenen Verzeichnis einen Ord-
    ner namens "lib". Da das MySQL-Installerpaket die Bibliotheken wie "libmysql-
    client.dylib" in diesen Ordner kopiert, funktioniert der oben angegebene Pfad
    einwandfrei, wenn MySQL als Paket installiert wurde. Wer jedoch MySQL höchst-
    persönlich wie zb. nach diesem Tutorial kompiliert hat, muss vorher noch ein
    Paar Anpassungen vornehmen:
    Code:
    $> cd /usr/local/mysql/lib/mysql
    #> cp `ls` /usr/local/lib
    Als Pfad für das "--with-mysql"-Flag muss dann "/usr/local/" angeben wer-
    den.

    - Ansonsten ist noch zu beachten, dass je nach MySQL-Installerpaket, die
    "mysql.sock"-Datei an einem anderen Ort gespeichert wird. Das in dem
    Datenbanken-Unterforum festgepinnte Tutorial legt das MySQL-Sock in
    /usr/local/mysql/run ab. In diesem Fall müsste das --with-mysql-sock-
    Flag auf diesen Pfad zeigen.

    Wenn "configure" ohne Fehlermeldung durchläuft, muss das PHP-Modul kom-
    piliert werden (genau hier fing der Prozessorlüfter des PB's zu Surren an :D):
    Code:
    $> make
    Dieser Vorgang kann durchaus 10-15 Minuten dauern. Wenn "make" PHP
    fertig kompiliert hat, wird mit
    Code:
    #> make install
    die "libphp5.so"-Datei nach /usr/libexec/httpd kopiert, und das oben bereits
    erwähnte apxs-Tool trägt das Modul automatisch in der httpd.conf ein.

    Damit PHP nun lauffähig ist, müssen noch zwei minimale Änderungen der
    httpd.conf vorgenommen werden:
    Code:
    #> vi /etc/httpd/httpd.conf
    -Mit der Eingabe von "445G" springt der Cursor automatisch in die 445. Zei-
    le ("DirectoryIndex index.html"). Dort gelangt man dann mit "i" in den Ein-
    gabemodus, und fügt ein Leerzeichen hinter "index.html" "index.php" ein

    -Mit "Escape" gelangt man wieder in den Kommandomodus. Wenn man jetzt
    "856G" eintippt, springt der Cursor in diese Zeile ("AddType application/x-
    tar..."). Wir gehen wieder in den Eingabemodus("i"), und fügen eine Zeile
    tiefer folgendes ein:
    Code:
    AddType application/x-httpd-php .php
    Jetzt kann der Text mit <Escape> - ":" - "wq" - <Enter>, gespeichert, und
    vi verlassen werden.

    Hinweis: Man kann in vi/vim in Zeilen mit bestimmten Suchwörtern springen,
    indem man <Escape> - ":" - "/<Suchwort>" - "<Enter>" (nacheinander) ein-
    gibt.

    Jetzt dem Apache-Webserver mit
    Code:
    #> apachectl restart
    neustarten und voila, unsere jungfräuliche und optimal an das System an-
    gepasste PHP-Installation sollte einwandfrei laufen ;)
     
    Zuletzt bearbeitet: 27.02.2006
  4. moses_78

    moses_78 Thread Starter MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    Registriert seit:
    08.04.2005
    Feinschliff & Ergänzungen

    Um die CLI/CGI-Version von PHP nutzbar zu machen, empfielt sich
    folgendes:
    Code:
    #> ln -sf /usr/local/php/bin/php /usr/bin/php
    Wer PEAR nutzt oder benutzen möchte, sollte folgenden Schritt ausführen:
    Code:
    #> ln -sf /usr/local/php/bin/pear /usr/bin/pear
    Ich hoffe, mein Tutorial ist einigermaßen verständlich und funktioniert, wenn
    nicht, schreibt eine PM oder postet in den Thread. Über Feedback würde ich
    mich jederzeit freuen :)

    Dieses Tutorial sollte bei genauer Befolgung keine irreversiblen Schäden am
    System verursachen, wenn doch, kann ich nicht dafür verantwortlich gemacht
    werden. Desweiteren darf dieser Text nicht ohne Genehmigung des Autors
    auf anderen Webseiten publiziert werden.
     
    Zuletzt bearbeitet: 27.02.2006
  5. andreask2

    andreask2 MacUser Mitglied

    Beiträge:
    78
    Zustimmungen:
    1
    Registriert seit:
    24.07.2006
    Danke für das gute Tutorial!

    Eine Frage hätte ich aber - wenn Apple den Apachen aktualisier (Software-Update), bleibt dann alles so wie es ist? Spätestens mit Apache 2 wird sich da vermutlich auf jeden Fall was ändern, vielleicht auch mit dem Umstieg auf PHP 5?

    Wie ist das wenn man wie beschrieben die originalen PHP binaries mit symlinks überschreibt?

    Eine Anmerkung noch: libxml wird bei PHP seit einiger Zeit mitgeliefert und muss nicht zusätzlich installiert werden.

    Übrigens muss man JPEG Support auch einkomilieren (analog zu png), falls jemand JPEG benötigt.
     
    Zuletzt bearbeitet: 03.08.2006
  6. andreask2

    andreask2 MacUser Mitglied

    Beiträge:
    78
    Zustimmungen:
    1
    Registriert seit:
    24.07.2006
    Da das mit jpeg bei mir nicht ganzs so einfach war wie die anderen Bibliotheken, hier mal wie ich es hinbekommen habe:

    Code:
    wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
    tar -xzf jpegsrc.v6b.tar.gz
    cd jpeg-6b
    ln -s `which glibtool` ./libtool
    export MACOSX_DEPLOYMENT_TARGET=10.4
    sudo mkdir -p /usr/local/lib/jpeg-6b/include
    sudo mkdir /usr/local/lib/jpeg-6b/lib
    ./configure --prefix=/usr/local/lib/jpeg-6b --enable-shared
    make
    sudo make install-lib
    Und dann eben bei php ./configure "--with-jpeg-dir=/usr/local/lib/jpeg-6b"
     
    Zuletzt bearbeitet: 06.11.2006
  7. moses_78

    moses_78 Thread Starter MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    Registriert seit:
    08.04.2005
    < Eine Frage hätte ich aber - wenn Apple den Apachen aktualisier
    < (Software-Update), bleibt dann alles so wie es ist? Spätestens
    < mit Apache 2 wird sich da vermutlich auf jeden Fall was ändern,
    < vielleicht auch mit dem Umstieg auf PHP 5?
    falls apple jemals auf den apache 2.x wechseln sollte, müssten sowieso
    die ganzen module neugeschrieben werden, da der apache 1.x und der
    apache 2.x ein völlig unterschiedliches api haben. hat apple denn mal
    angekündigt, dass sie umsteigen wollenß

    < Wie ist das wenn man wie beschrieben die originalen PHP binaries mit
    < symlinks überschreibt?
    wenn ich mich korrekt erinnere, ist bei os x im originalzustand schon ein
    cli-binary dabei. der symlink wird gesetzt, damit die anwendungen ,,php´´
    und ,,pear´´ in ihren aktuellen versionen in PATH vertreten sind, alternativ
    könnte man auch auch den bin-ordner aus dem installationsprefix in PATH
    aufnehmen.
     
  8. stenser

    stenser MacUser Mitglied

    Beiträge:
    777
    Zustimmungen:
    2
    Registriert seit:
    21.10.2003
    Wenn ich den Apache nach eben dieser Anleitung kompiliert hab...
    Frage 1: Wie kann ich das php dann auf 5.2.0 updaten?
    Frage 2: Wie kann ich einfach jpeg-Support dazu installieren?


    Jens
     
  9. andreask2

    andreask2 MacUser Mitglied

    Beiträge:
    78
    Zustimmungen:
    1
    Registriert seit:
    24.07.2006
    Wo wird denn in dieser Anleitung Apache kompiliert?
    prinzipiell kannst Du das einfach drüberinstallieren. Ich würde vielleicht vorher das /usr/local/php - Verzeichnis umbenennen, zum einen um einfach wieder auf die alte Version umsteigen zu können, und weil es vielleicht etwas sauberer ist. Allerdings geht dann das alte mod_php verloren, das könnte man ggfs. noch sichern (`locate libphp5.so`). (Wenn jemand das anders sieht bitte korrigieren!)
    Das habe ich in meinem 2. Posting beschrieben: http://www.macuser.de/forum/showpost.php?p=2015758&postcount=6
     
  10. stenser

    stenser MacUser Mitglied

    Beiträge:
    777
    Zustimmungen:
    2
    Registriert seit:
    21.10.2003
    Ok. Habs hinbekommen. Wir war nur die Reihenfolge dann nicht ganz klar. Und das ich php nochmal komplett neu kompilieren muss. Aber auch das drüberbügeln hat einfach gut funktioniert.

    Jens
     
Die Seite wird geladen...
Ähnliche Themen - [Tutorial] PHP Apache Forum Datum
Werte der gleichen Schlüssel summieren (assoziativen Array) Web-Programmierung 25.08.2016
einfaches php. emailformular bei strato Web-Programmierung 08.08.2015
PHP Array in Google Maps Wegpunkte umwandeln Web-Programmierung 13.03.2015
Trotz Tutorial - php läuft nicht Web-Programmierung 26.01.2007
Tutorial: GD + GD Module für Perl installieren Web-Programmierung 11.12.2005

Diese Seite empfehlen

Benutzerdefinierte Suche