PHP als CGI....

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP als CGI....

    Tag,

    verwendet wird ein Apache 2.0.50 und PHP 5.0.1 bzw. PHP 4.3.8. Ich habe nie wirklich daran gedacht PHP als CGI zu nutzen, da das für mich eigentlich nur Nachteile bietet.
    Da bisher aber keine andere brauchbare Lösung existiert muss ich nun PHP 5 als CGI installieren um sowohl PHP4 als auch PHP5 gleichzeitig interpretieren zu lassen - nun gut.

    Folgenden Einstellungen aus der httpd.conf:

    ScriptAlias /cgi-bin/ "/usr/services/httpd/cgi-bin/"
    Action php-script /cgi-bin/php
    AddHandler php-script .php

    /usr/services/httpd ist der ServerRoot und ich habe die PHP5-Binary einfach nach /usr/services/httpd/cgi-bin kopiert. Andere Load-Module-Anweisungen für PHP4 etwa sind aktuelle auskommentiert. Mit der PHP4-Binary oder anderen CGI-Skripten ist es übrigens der selbe Fehler:

    Error 500 - Internal Server Error

    Premature end of script headers: php

    Beide PHP-Versionen wurden mit --enable-force-cgi-redirect kompiliert.
    Ich hab auch schonmal versucht mit header(); einen zusätzlichen Content-Type-Header hinzuzufügen - Fehlanzeige....
    Das cgi-bin Verzeichnis gehört dem selber User und der selben Gruppe unter der auch der Server läuft.

  • #2
    schau mal hier: http://www.php-resource.de/forum/sho...threadid=41908

    Kommentar


    • #3
      Den Thread kenne ich....funzt trotzdem nicht.
      Aktuelle Konfiguration:

      LoadModule php4_module modules/libphp4.so
      AddType application/x-httpd-php .php

      ScriptAlias /cgi-bin/ "/usr/services/httpd/cgi-bin/"
      AddType application/x-httpd-php5 .php5
      Action application/x-httpd-php5 "/cgi-bin/php"

      .php's werden normale durch PHP4 interpretiert. Sobald sie .php5 heißen gibts wieder den selben 500er Error.

      Woher kommt eigentlich der MIME für application/x-httpd-php5? So hätte man doch beides als DSO laufen lassen können....

      Kommentar


      • #4
        Nachtrag:

        Ich kann nicht mal wenn ich wollte PHP4 allein als CGI realisieren! Irgendwie scheint hier was oberfaul zu sein. Der selbe Fehler...

        Vielleicht müssten wir nochma klären wie man PHP als CGI implementiert.
        Wahrscheinlich funzt die Lösung mit der Modul- und der CGI-Einbindung sogar, aber wenn nicht mal ein normales CGI-Konstrukt geht....

        Kommentar


        • #5
          lesen kannst du auch nicht, oder

          die exe.Datei von dem Parser musst du angeben, nicht irgendwelche Pfade

          Action application/x-httpd-php5 "/p_h_p_5/php-cgi.exe"

          Kommentar


          • #6
            Du bist auch so ne Exe
            Wir reden hier von Unix bzw. GNU/Linux und nicht Wintendo.

            Btw: ich bin selber zu blöd gewesen rauszukriegen, dass man PHP nur dann als CGI kompilieren kann, wenn ein --with-apxs bzw. --with-apxs2 Option bei ./configure angegeben wurde, sprich als Server API: CGI oder FastCGI angegeben wird

            Premature end of script headers deutet ja schon darauf hin, dass statt der erwarteten Headers irgendwelche anderen Daten im Ausgabestream landen - das ist zum Beispiel bei Perl-Skripten ein großes Problem...

            Naja, trotzdem vielen Dank fürs Interesse...

            Kommentar


            • #7
              hehe sorry, hab nicht drauf geachtet, dass es von Linux die Rede war

              Kommentar


              • #8
                Habe das gleiche Problem mit dem "premature end...". Habe php5 mit folgendem configure kompiliert:

                ./configure' '--prefix=/usr/local/php5' '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-libxml-dir=/usr/bin' '--with-zlib' '--with-zlib-dir=/usr/lib' '--with-mysql' '--with-regex=php' '--with-config-file-path=/etc/php5/' '--disable-rpath' '--enable-debug' '--enable-memory-limit' '--enable-calendar' '--enable-sysvsem' '--enable-sysvshm' '--enable-track-vars' '--enable-trans-sid' '--enable-bcmath' '--with-db3' '--enable-exif' '--enable-filepro' '--enable-ftp' '--with-gettext' '--enable-mbstring' '--with-pcre-regex=/usr' '--enable-shmop' '--enable-sockets' '--enable-wddx' '--with-expat-dir=/usr/lib' '--with-xmlrpc' '--without-pgsql' '--disable-static' '--with-layout=GNU' '--with-gd=shared,/usr' '--with-jpeg-dir=shared,/usr' '--with-png-dir=shared,/usr' '--with-ldap=shared,/usr' '--with-mcal=shared,/usr' '--with-mhash=shared,/usr' '--with-mm' '--with-mysql=shared,/usr' '--enable-xslt' '--with-xsl' '--with-xslt-sablot=shared,/usr' '--with-ttf=shared,/usr' '--enable-soap' '--with-openssl'

                also mit apxs, aber ohne cgi. Es gibt als options ja nur -force-redirect und fastcgi. Also müsste s so ja funzen. Tut es aber nicht. Perl Skripte kann ich als CGI laufen lassen, an der Konsole gehen die php5 Skripte auch.

                In der http.conf steht:

                Action php5-cgi /usr/local/php5/bin/php
                AddHandler php5-cgi .php5

                EcxecCGI ist erlaubt.

                Was kann da noch falsch sein?

                Kommentar


                • #9
                  Wenn du PHP mit einer Apache-SAPI kompilierst, musst du es auch als solches einsetzen und nicht als CGI. Im Falle der apxs2-API läuft PHP in der Apache-Konfiguration als Modul über die LoadModule-Direktive - wie es in deinem Fall sein müsste.

                  Würdest du deiner jetzigen Apache-Konfiguration entsprechend PHP als CGI einsetzen wollen, müsstest du es als CGI kompilieren. Dazu lässt du einfach die apxs2-Option im configure-Skript weg, da PHP standardmäßig als CGI erstellt wird. Am Ende von configure wird dir eine Übersicht der Konfiguration erstellt, wobei dort als SAPI-Handler nun CGI auftauchen müsste....

                  Kommentar


                  • #10
                    Aahh, dass PHP nur als CGI kompiliert wird wenn man --with-apxs weglässt wusste ich nicht!!

                    Nun habe ich es so gelöst, dass ich den Apache als prefork kompiliert habe, dass wird ja auch von php.net empfohlen. Da kann ich php5 nun als Modul einbinden. Vorher hat der nämlich immer gemeckert, weil php5 nicht threadsafe kompiliert wäre, was aber wohl gar nicht geht. Nun ist halt nichts mit threadsafe.

                    Dafür tut es...

                    Danke für die Hilfe!

                    Kommentar

                    Lädt...
                    X