Individuelles PHP Binary angeben

  • Guten Tag,


    wie schaut es mit der PHP Versionswahl aus?


    Bzw. wenn das Feature noch "Lange" benötigt, wie kann man einen individuelles
    PHP Binary (entweder global, oder halt so, dass die Datei php-fcgi-starter eines
    Kunden nicht überschrieben wird .. angeben)


    VG,
    Torsten Walther

  • Um ein abweichendes PHP-Binary zu setzen, kommt es eigentlich nur drauf an, ob suPHP oder FastCGI verwendet wird.


    Nachfolgend die Anleitung (ungetestet, aus dem Stegreif):
    Grundsätzlich im jeweiligen Kunden-Webspace eine Datei namens ".httpd.conf" anlegen (zB. /var/www/web123/.httpd.conf). Diese Datei muss "root:root" gehören und chmod=644 haben.
    Im nachfolgenden Beispiel gehe ich mal davon aus, dass man z.B. PHP 5.4 bereitstellen will, und das unter /usr/local/php54/ installiert ist.


    • suPHP:
      Folgende Zeilen eintragen:

      Code
      suPHP_AddHandler application/x-httpd-suphp54
      AddType application/x-httpd-suphp54 .php .php5


      In die Datei /etc/suphp/suphp.conf im Abschnitt "Handlers" folgende Zeile hinzufügen:

      Code
      application/x-httpd-suphp54="php:/usr/local/php54/bin/php-cgi"


    • FastCGI:
      Folgende Zeilen eintragen:

      Code
      FCGIWrapper /var/www/webxxx/conf/php54/php-fcgi-starter .php
      FCGIWrapper /var/www/webxxx/conf/php54/php-fcgi-starter .php5


      Ins Verzeichnis /var/www/webxxx/conf wechseln, dort "php5" in "php54" kopieren (cp -a php5 php54). Dann die Datei php54/php-fcgi-starter entsprechend anpassen, so dass auf die "neue" php.ini sowie das neue PHP-Binary verwiesen wird, z.B.:

      Code
      #!/usr/bin/sh
      umask 0022
      PHPRC=/var/www/webxxx/conf/php54/
      export PHPRC
      exec /usr/local/php54/bin/php-cgi



    Danach Apache neu starten und im LiveConfig irgendeine Einstellung des betroffenen Hostingvertrags neu speichern (so dass dessen vHost-Konfiguration neu erzeugt und damit die .httpd.conf per Include aufgenommen wird). Danach mit einer phpinfo() prüfen, ob das Ergebnis passt.


    Die notwendigen Änderungen zur Verwaltung verschiedener php-Versionen sind unsererseits fast abgeschlossen, so dass das auch in einer der nächsten 1.7er-Versionen mit drin ist. Noch ein wenig Arbeit gibt es da für die notwendige GUI (PHP-Versions-Auswahl).


    Viele Grüße


    -Klaus Keppler

  • Hallo,


    hat die FastCGI-Variante von Herrn Keppler schon jemand erfolgreich aktiviert?


    ich erhalte folgenden Fehler:


    [Thu Jul 25 17:16:30 2013] [warn] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
    [Thu Jul 25 17:16:30 2013] [error] Premature end of script headers: info.php


    suexec.log meldet ok:
    [2013-07-25 17:16:30]: uid: (1002/web1) gid: (1002/web1) cmd: php-fcgi-starter


    Suche ergab Hinweise auf Rechteprobleme bei den Dateien oder/und
    vhost-Fehler.


    Ein Aufruf auf der shell bringt die richte Version 5.4
    /opt/php54/bin/php-cgi /var/www/web1/htdocs/info.php


    hat jemand eine Idee, dem Fehler auf die Schliche zu kommen?
    Vielen Dank.


    Hier die conf-Dateien:


    .httpd.conf (wird auch im vhost eingebunden)
    <IfModule mod_fcgid.c>
    FcgidBusyTimeout 3600
    FcgidMaxRequestLen 134217728
    </IfModule>
    FCGIWrapper /var/www/web1/conf/php54/php-fcgi-starter .php
    FCGIWrapper /var/www/web1/conf/php54/php-fcgi-starter .php5


    php-fcgi-starter
    #!/bin/sh
    umask 0022
    PHPRC=/var/www/web1/conf/php54/
    export PHPRC


    PHP_FCGI_CHILDREN=10
    export PHP_FCGI_CHILDREN


    PHP_FCGI_MAX_REQUESTS=250
    export PHP_FCGI_MAX_REQUESTS


    PHP_FCGI_BUSY_TIMEOUT=3600
    export PHP_FCGI_BUSY_TIMEOUT


    PHP_FCGI_MAX_REQUESTLEN=134217728
    export PHP_FCGI_MAX_REQUESTLEN


    exec /opt/php54/bin/php-cgi

  • Schaut auf den ersten Blick eigentlich nicht verkehrt aus.
    Existiert denn auch eine php.ini in /var/www/web1/conf/php54 ?
    Falls nicht, einfach mal die aus ../php5/ kopieren.


    Dann in der php.ini mal "log_errors=on" und "log_startup_errors" (oder so ähnlich) auch auf "on" setzen. Im Log (~/logs/priv/php_errors.log) sollte dann mehr auftauchen.


    Welche Distribution nutzen Sie?

  • Vielen Dank für die Rückmeldung, läuft nun!


    1. php_errors.log wurde nicht geschrieben, in der php.ini war falsch drin:
    error_log = "/var/www/web1/logs/php/php_errors.log" - keine Ahnung wie das falsch reinkommt.
    muss natürlich lauten: "/var/www/web1/logs/priv/php_errors.log"


    2. dann tauchte der Übeltäter auf:
    PHP Fatal error: Directive 'magic_quotes_gpc' is no longer available in PHP in Unknown on line 0


    Distri ist Debian Squeeze

  • Hallo, ich wollte das gerade auf php5.3 umstellen.
    PHP 53 wurde in /usr/local/php53/ installiert. folgende Schritte habe ich gemacht:


    suPHP:
    Folgende Zeilen eintragen:
    Code:
    suPHP_AddHandler application/x-httpd-suphp53
    AddType application/x-httpd-suphp53 .php .php5
    In die Datei /etc/suphp/suphp.conf im Abschnitt "Handlers" folgende Zeile hinzufügen:


    Code:
    application/x-httpd-suphp54="php:/usr/local/php53/bin/php-cgi"


    Apache neu starten und im LiveConfig irgendeine Einstellung des betroffenen Hostingvertrags neu speichern


    eine PHP.ini datei wurde auch unter conf im Ordner webXXX/conf/php53 abgelegt.


    Distribution ist Debian 7


    Leider sehe ich keinen Erfolg.:(


    --> Diesen sehe ich nur wenn ich die Datei: webxxx.conf anpasse:
    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-suphp
    </FilesMatch>
    zu
    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-suphp53
    </FilesMatch>


    suPHP_ConfigPath /var/www/web1002/conf/php5/
    zu
    suPHP_ConfigPath /var/www/web1002/conf/php53/


    Nur das ist doch nicht der Sinn oder?
    Müsste sich das nicht von selbst da anpassen?


    --> Wenn man FAST CGI nimmt geht es mit FAST CGI, jedoch wollen wir suPHP. Kann jemand sagen wie wir das beheben, dass es auch mit der o.g. Config geht?


    P.s. Wenn man FASTCGI nimmt Problem, wie kann man dieses noch füllen:
    > Scan this dir for additional .ini files
    > Additional .ini files parsed

  • suPHP_AddHandler application/x-httpd-suphp53
    AddType application/x-httpd-suphp53 .php .php5
    In die Datei /etc/suphp/suphp.conf im Abschnitt "Handlers" folgende Zeile hinzufügen:


    Code:
    application/x-httpd-suphp54="php:/usr/local/php53/bin/php-cgi"


    Bitte achten Sie genau darauf, dass Sie die Konfiguration konsistent erstellen. Es funktioniert natürlich nichts, wenn Sie einmal einen Handler für "x-httpd-suphp53" anlegen und einmal mit "x-httpd-suphp54" arbeiten.


    Zitat

    P.s. Wenn man FASTCGI nimmt Problem, wie kann man dieses noch füllen:
    > Scan this dir for additional .ini files
    > Additional .ini files parsed

    [/quote]


    Dieser Pfad ist hardcodiert und kann nur bei der Compilierung von PHP verändert werden.

  • Hallo,


    war hier ein Schreibfehler. Natürlich hieß es:


    Code:
    application/x-httpd-suphp53="php:/usr/local/php53/bin/php-cgi"


    Leider trotz alle dem wie oben beschrieben ohne Erfolg. Er fügt es nicht richtig ein.


    Ich habe jetzt noch etwas geschaut, wenn ich https.conf deaktiviere und in die
    webxxx.conf bleibt immer der Eintrag (egal welches webxxx):


    <IfModule mod_suphp.c>
    <IfModule mod_php5.c>
    php_admin_flag engine off
    <FilesMatch "\.ph(p3?|tml)$">
    SetHandler application/x-httpd-suphp
    </FilesMatch>
    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-suphp
    </FilesMatch>
    </IfModule>
    suPHP_Engine on
    suPHP_ConfigPath /var/www/web1002/conf/php5/
    </IfModule>


    Bei aktivieren von https.conf kommt nur der Eintrag: Include /var/www/webxxx/.httpd.conf hinzu.


    Und in diesem steht wie gesagt:
    suPHP_AddHandler application/x-httpd-suphp53
    AddType application/x-httpd-suphp53 .php .php5


    Fazit: Durch die .httpd.conf wird nichts hinzugefügt oder verändert.


    Ich hoffe hier kann jemand helfen. :(
    Wir wissen nicht wie es behoben werden kann. Unter FASTCGI läuft es ja. Das Problem stellt einzig und allein suPHP dar. Wir wollen jedoch suPHP nutzen. Gibt es dazu bitte einen Fix?

  • Zitat

    Unter FASTCGI läuft es ja. Das Problem stellt einzig und allein suPHP dar. Wir wollen jedoch suPHP nutzen.


    auch wenn meine Frage vom Thema etwas abweicht: warum suPHP nutzen, wenn FastCGI zur Verfügung steht?
    Ich kenne da keinen vernünftigen Grund, lasse mich aber gern belehren :)

  • Hallo,
    ist im Prinzip fast das gleiche. Meines wissens nach ist es aber so, dass FastCGI mehr RAM braucht und suPHP mehr CPU - Lastig ist. Trotz alle dem, müsste man ja suPHP lt. Anleitung auch aktivieren können, nur den Header setzt es leider eben nicht ein.


    Ich würde mich dort über jeden Rat freuen. Es gibt offensichtlich dort einen BUG wenn man Debian 7 verwendet.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!