[SOLVED] mehrere Apache2-Webserver mit unterschiedlichen PHP-Versionen betreiben

    • Offizieller Beitrag

    Ich hab ein paar alte Webseiten, die leider nicht PHP 6 oder 7 kompatibel sind. Also hab ich nach dieser Anleitung einen 2. Apache eingerichtet, der mit PHP5.6 laufen soll, während mein primärer Apache PHP7.0 served.


    der primäre apache2 horcht auf Port 80
    der zweite apache2-php5 horcht auf Port 8080


    Vhosts hab ich entsprechend eingestellt.
    Also alle neuen Seiten eingerichtet in /etc/apache2/sites-available mit <VirtualHost *:80> ....
    Alle alten Seiten im sekundär-Apache /etc/apache2-php5/sites-available mit <VirtualHost *:8080> ....


    Die DNS AAA-Records aller Seiten lauten (natürlich) alle auf die gleiche IP. Aber je nach incoming domain sollte jetzt der eine oder der andere Apache übernehmen. Leider tun sie das nicht :( Offenbar antwortet immer nur der primäre Apache.
    Geb ich die Domain einer sekundär-Seite ein, komm ich nur auf das Webroot-Verzeichnis /var/www/html
    Geb ich hinter dem Domainnamen aber noch den Port :8080 an, komm ich auf die richtige Homepage!


    Was muss ich machen, dass :8080 entfällt und ich nur durch Angabe des Domainnamens auf die richtige Seite (ergo: den richtigen Webseiten-Pfad) und den richtigen Apache (mit PHP5.6) komme?

    • Bitte hilfe :)
  • Du schießt mit Kanonen auf Spatzen. :)


    Wenn es dir rein darum geht, dass einige Seiten eine andere PHP-Version nutzen sollen, würde ich mir einfach eine eigene PHP-Version kompilieren (das hast du offenbar schon gemacht) und dann diesem Web sagen, welche PHP-Binary er nutzen soll.


    Mit mod_fcgid sähe das in etwa so aus:

    2 Instanzen von Apache auf einem Server mag zwar funktionieren, aber irgendwas sagt mir, dass man damit nur Probleme haben wird.

    • Offizieller Beitrag

    Ich hab das mit den multiplen PHP-Versionen eh auch gegoogelt, aber da kamen mir die Anleitungen komplizierter vor :)
    Ich hab mir PHP5.6 einfach aus nem alternativen repository geholt .. damit brauch ich mir auch keine Gedanken über Sicherheitsupdates zu machen (sofern noch welche kommen ...)


    Danke wieder mal für den Hinweis, ich werd das gleich mal testen :)

  • Du kannst ja mal eine phpinfo(); in die Webs hauen, darin siehst du, welche php.ini genommen werden. In den vhost-Files kannst pro Web alternativ auch angeben, welche php.ini er nehmen soll.


    Bzgl. .htaccess: Kenne deine Config nicht, aber üblicherweise muss man in der vhost-config explizit angeben, dass man in der htaccess Servervariablen überschreiben darf. Google mal AllowOverride All.

    • Offizieller Beitrag

    Ja, weiß ich eh. Und vorher hat er die .htaccess-Files auch akzeptiert. Nur nachdem jetzt fastcgi das handling übernimmt, werden die .htaccess-Files offensichtlich ignoriert.
    Ich check mal mit phpinfo(); wo die genutzte php.ini liegt .. Thx nochmal!


    EDIT:
    Tja, da steht definitiv drinnen:
    display_errors = Off
    und
    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT


    ist auch bei phpinfo(); aufgelistet.
    wird nur leider ignoriert :(

  • Steht der Wert sowohl in der Spalte "Master value" als auch "Local value" oder gibt's da einen Unterschied?


    Generell klingt das danach, dass das PHP-Script, das du aufrufst oder das irgendwelche anderen Scripte inkludiert, die Einstellungen überschreibt mit


    PHP
    <?php
    @ini_set('display_errors', 1);
    error_reporting(E_ALL);
    <?php

    oder so ähnlich. Ich nutze eigentlich fast ausschließlich PHP im FastCGI-Mode und der versteht die .htaccess auf jeden Fall.


    Sowas wie nginx hast du aber nicht noch zusätzlich laufen, oder? nginx kann z.B. nix mit den .htaccess-Dateien anfangen. Das hat eigene Konfigurationsmethoden.


    Bzgl. htaccess: Nutzt du php_value / php_flag oder php_admin_value / php_admin_flag zum Setzen der Einstellungen in der .htaccess?


    Welche PHP-Fehlermeldung wird eigentlich ausgegeben? :)

  • Laut deiner phpinfo ist error_reporting auf 22519 gesetzt, und das inkludiert aber E_STRICT, wenn mich nicht alles täuscht. Ab PHP 5.4 gehört E_STRICT zu E_ALL, d.h. sobald man E_ALL zulässt, werden auch E_STRICT ausgegeben, wenn man's nicht explizit deaktiviert.


    Ansonsten scheint das etwas Drupal-spezifisches zu sein, das nicht mit PHP 5.4+ zurecht zu kommen scheint. Vielleicht hilft das? https://www.drupal.org/project/___drupal_php_strict_suppress

    • Offizieller Beitrag

    Hmm .. die Frage ist nur, wo kommt das her?
    In /etc/php/5.6/cgi/php.ini steht definitiv:
    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE


    in meiner .htaccess steht das hier:
    php_flag display_errors off
    php_value error_reporting 0


    Aber die wird ja ignoriert, seit ich fcgi verwende ...


    mal diese ganzen anderen .ini's durchsuchen, ob da irgendwo noch ein Hund drin ist ...