André Laugks: PHP5 unter Linux mit DOM_XML und XSLT kompilieren

Hallo!

Ich würde gern unter PHP5 mit DOM_XML und XSLT kompilieren.

Beide Erweiterungen wurden ja durch andere/neue Erweiterungen ersetzt.

Nun dachte ich, aus Kompatibilitätsgründen, kann man PHP5 noch mit diesen Erweiterungen kompilieren. Nur werden mir die Optionen nicht angeboten. Kennt jemand einen weg wie ich es PHP5 trotzdem beibringen kann?

Nach meinen Recherchen werde ich wohl PHP4 mit einem zweiten Apache parallel installieren müssen und dann mit mod_rewrite und mod_proxy im "ersten" Apache arbeiten um für PHP4-Scripte nicht auf einen anderen Port wechseln zu müssen wo der "zweite" Apache läuft.

André Laugks

--
Die Frau geht, die Hilti bleibt!
  1. hallo André,

    Ich würde gern unter PHP5 mit DOM_XML und XSLT kompilieren.

    Dann tu das doch *g*

    Tut mir leid, aber ich verstehe deine Frage nicht ganz. Und ich habe jetzt auch nicht aufgepaßt und weiß grade nicht, welche Distribution du benutzt. Außerdem gilt PHP5 != PHP5, es gibt PHP5.0.3, PHP5.0.4, PHP5.0.5 ... Bei einer von http://www.opensuse.org heruntergeladenen SUSE 10.0 ist PHP5 zum Beispiel gar nicht dabei, während es das in der Kaufversion der älteren SuSE 9.3 längst gab und ein online-Update für PHP5.0.5 verfügbar ist (aber nicht für SUSE 10.0).

    Nun dachte ich, aus Kompatibilitätsgründen, kann man PHP5 noch mit diesen Erweiterungen kompilieren.

    Sollte man können. Ich habe PHP 5.0.5 auf FreeBSD5.4 und FreeBSD-CURRENT (entspricht 7) laufen, und wenn ich es kompilieren möchte, werde ich gefragt, ob ich diese "Optionen" haben will. Was mich dabei stört, ist, daß unbedingt ein Apache 2.0.55 mitinstalliert werden soll, wo ich doch schon einen Apache 2.1.8-beta laufen habe ...

    Nur werden mir die Optionen nicht angeboten. Kennt jemand einen weg wie ich es PHP5 trotzdem beibringen kann?

    Was bedeutet "werden nicht angeboten"? Was funktioniert nicht, wenn du dein ./configure-Script aufrufst? Gabs da nicht auch irgendwas mit PECL? Hast du mal auf einer anderen Konsole ein
       tail /var/log/messages
    mitlaufen lassen?

    Nach meinen Recherchen werde ich wohl PHP4 mit einem zweiten Apache parallel installieren müssen und dann mit mod_rewrite und mod_proxy im "ersten" Apache arbeiten um für PHP4-Scripte nicht auf einen anderen Port wechseln zu müssen wo der "zweite" Apache läuft.

    Das verstehe ich nicht. Parallelinstallationen verschiedener Apache-Versionen sind möglich und manchmal für dich als Entwickler sinnvoll (um testen zu können, was unter welchen Bedingungen geht), und Parallelinstallationen verschiedener PHP-Versionen auch. Ist ein bißchen Fuzzelei, geht aber. Der Sinn, oder besser der Zwang, nach dem du handelst, erschließt sich mir aber noch nicht.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    http://www.christoph-schnauss.de
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hallo Christoph!

      Dann tu das doch *g*

      Habe ich ja schon! Geht leider nicht! :-)

      Tut mir leid, aber ich verstehe deine Frage nicht ganz. Und ich habe jetzt auch nicht aufgepaßt und weiß grade nicht, welche Distribution du benutzt. []

      Ich habe SuSE 9.3 am laufen. PHP5.0.4 habe ich selbst kompiliert.

      Was bedeutet "werden nicht angeboten"? Was funktioniert nicht, wenn du dein ./configure-Script aufrufst?

      --with-dom, --with-xslt-sablot und --with-dom-xslt kennt das ./configure-Script nicht. Ich habe es auch mit "./configure --help | grep sablot" etc. getestet. Ich kann es also nicht übersehen haben.

      Ich habe es mit diesen Optionen trotzdem mal kompiliert. PHP5 überspringt diese Parameter einfach. Über phpinfo(); werden mir diese Parameter unter "Configure Command" angezeigt, aber in der Liste der Erweiterungen kann ich sie nicht sehen.

      Gabs da nicht auch irgendwas mit PECL?

      Gute Frage! wo ich so im Moment drüber nachdenke, klingelt da was.

      Hast du mal auf einer anderen Konsole ein
      tail /var/log/messages
      mitlaufen lassen?

      Neee!

      Nach meinen Recherchen werde ich wohl PHP4 mit einem zweiten Apache parallel installieren müssen und dann mit mod_rewrite und mod_proxy im "ersten" Apache arbeiten um für PHP4-Scripte nicht auf einen anderen Port wechseln zu müssen wo der "zweite" Apache läuft.

      Der Sinn, oder besser der Zwang, nach dem du handelst, erschließt sich mir aber noch nicht.

      1. Apache (Port 80) / PHP5 als Modul
      2. Apache (Port 10080) / PHP4 als Modul

      In der httpd.conf des 1. Apache steht dann folgendes:

      // Schematisch!!!
      RewriteCond %{QUERY_STRING} .php4
      RewriteRule http://www.domain.de/script.php4 http://www.domain.de:10080/script.php4 [P]

      André Laugks

      --
      Die Frau geht, die Hilti bleibt!
      1. hallo,

        --with-dom, --with-xslt-sablot und --with-dom-xslt kennt das ./configure-Script nicht. Ich habe es auch mit "./configure --help | grep sablot" etc. getestet. Ich kann es also nicht übersehen haben.

        Richtig, im Script ist das nicht enthalten. Das heißt aber nicht, daß es in den Sourcen nicht vorhanden ist. Und nichts hindert dich, dein configure-Script um eben diese Einträge zu erweitern. Wenn das SuSE-eigene RPM die entsprechenden Sourcen nicht anbieten sollte (ich kanns im Moment nicht überprüfen), holst du dir den Kram halt nochmal von der Originaladresse.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        http://www.christoph-schnauss.de
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
      2. Hi André,

        1. Apache (Port 80) / PHP5 als Modul
        2. Apache (Port 10080) / PHP4 als Modul

        In der httpd.conf des 1. Apache steht dann folgendes:

        // Schematisch!!!
        RewriteCond %{QUERY_STRING} .php4
        RewriteRule http://www.domain.de/script.php4 http://www.domain.de:10080/script.php4 [P]

        Warum lässt du hier eigentlich zwei Apachen laufen? Wenn du PHP über CGI verwenden würdest, könntest du auch zwei PHP Versionen über einen Apachen laufen lassen - du scheinst also die Modul Version zu bevorzugen. Aus welchen Gründen?

        MfG, Dennis.

        1. Hallo!

          Aus welchen Gründen?

          Gute Frage. Vor 4 Jahren oder so, habe ich das erste mal ein LAMP aufgesetzt. In dem Tutorial war die Installation als Modul beschrieben. Seit dem dem mache ich es so. Das man über die CGI-Variante ist mir bekannt.

          Aber die Modul-Variante ist doch performanter!?

          André Laugks

          --
          Die Frau geht, die Hilti bleibt!
          1. Hi André,

            Aber die Modul-Variante ist doch performanter!?

            Ja, die Modul Variante ist performanter als die normale CGI Variante - ich habe mal was von 10x performanter gelesen. Allerdings gibt es noch die Möglichkeit PHP mittels dem Apache Modul mod_fastcgi über FastCGI laufen zu lassen. Diese Variante kommt dem Apache Modul was die Performance angeht schon deutlich näher - ein kleines Tutorial dazu gibts im Debian-Howto.

            MfG, Dennis.

            --
            Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
            .htpasswd Datei mit PHP erzeugen
            Sinnvolles Zitieren: Man zitiert nur Teilsätze des Vorposters auf die man sich bezieht! Nicht einfach alles.
  2. Hallo!

    Ich würde gern unter PHP5 mit DOM_XML und XSLT kompilieren.

    Beide Erweiterungen wurden ja durch andere/neue Erweiterungen ersetzt.

    Nun dachte ich, aus Kompatibilitätsgründen, kann man PHP5 noch mit diesen Erweiterungen kompilieren. Nur werden mir die Optionen nicht angeboten. Kennt jemand einen weg wie ich es PHP5 trotzdem beibringen kann?

    Man sollte sich immer auch die englische Variante des Manuals ansehen, da steht bei beiden Extensions nämlich:

    "Note:  This extension has been moved to the PECL repository and is no longer bundled with PHP as of PHP 5.0.0."

    Bei domxml gibt es auch eine Seite für das PECL-Paket: http://pecl.php.net/package/domxml
    Bei xslt anscheinend noch nicht. Sie ist aber im CVS: http://cvs.php.net/pecl/xslt/
    Bin mir zwar nicht 100% sicher ob das mit PHP 5 funktioniert, könnte man aber mal probieren. domxml sollte funktionieren.

    Wie man ein PECL-Paket installiert steht im Manual: http://de3.php.net/install.pecl
    Wie man etwas aus dem PHP-CVS auscheckt steht ebenfalls dort: http://de3.php.net/anoncvs.php

    Falls Du das noch nie gemacht hast, ist eigentlich ganz einfach:

    1. CVS installieren

    2. Verzeichnis für CVS erstellen
    $ mkdir ~/cvs
    $ cd ~/cvs

    3. Auf CVS-Server einloggen
    $ cvs -d :pserver:cvsread@cvs.php.net:/repository login

    4. PHP_5_0 Branch von pecl/xslt Verzeichnis auschecken
    $ cvs -d :pserver:cvsread@cvs.php.net:/repository checkout -r PHP_5_0 pecl/xslt

    Dann müsstest Du in ~/cvs ein pecl/xslt Verzeichnis haben, aus dem Du dann ganz einfach wie eine PECL-Extension installieren kannst (siehe Manual), also z.B.:

    $ cd ~/cvs/pecl/xslt
    $ phpize
    $ ./configure
    $ make
    $ make install

    ggfs. musst Du an ./configure noch irgendwas (--enable-xslt  --with-xslt-sablot oder sowas...) anhängen, siehe ./configure --help.
    Danach musst Du die Extension noch in der php.ini einbinden und den Webserver neu starten. Allerdings bin ich mir nicht sicher ob das überhaupt kompiliert, weil es eben noch nicht auf pecl.php.net veröffentlicht ist. Aber ein Versuch ist es Wert.

    Nach meinen Recherchen werde ich wohl PHP4 mit einem zweiten Apache parallel installieren müssen und dann mit mod_rewrite und mod_proxy im "ersten" Apache arbeiten um für PHP4-Scripte nicht auf einen anderen Port wechseln zu müssen wo der "zweite" Apache läuft.

    Was spricht dagegen den Code zu portieren? Die alten Extensions sind nicht ohne Grund ersetzt worden!

    Grüße
    Andreas

    --
    SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/
    1. Hallo!

      [...]

      Danke für die Infos.

      Was spricht dagegen den Code zu portieren? Die alten Extensions sind nicht ohne Grund ersetzt worden!

      Ich muß ein CMS integrieren, was  XSLT und DOM_XML benötigt.

      André Laugks

      --
      Die Frau geht, die Hilti bleibt!