Windows, Apache, 2+ PHP-Versionen. Wie konfigurieren?

Der Offtopic-Treff auf phpBB.de - Hier ist (unter Beachtung des phpBB.de-Knigges) fast alles erlaubt :-)
Antworten
Benutzeravatar
Wuppi
Mitglied
Beiträge: 732
Registriert: 14.05.2002 23:04
Wohnort: Köln
Kontaktdaten:

Windows, Apache, 2+ PHP-Versionen. Wie konfigurieren?

Beitrag von Wuppi »

Hallo zusammen,

Erstmal meine aktuelle Konfig:
Windows 10
Apache 2.4.41 (mit vhost-Konfig, h/2; ein VHOST macht https mit gültigen Letsencrypt-Zertifikat)
PHP 5.6.40 (TS)
mySQL

Ich würde gerne mit 7.x weiter machen - ich hab allerdings zig sehr große Scripte die hier klar sagen: "DEPRECATED". Die plane ich zwar umzuschreiben (bzw. NEU zu schrieben; die sind teilweise schon 15+ Jahre alt und ständig mit neu erworbenen Wissen (auch dank der Community hier! Danke an der Stelle!) ERWEITERT (man sieht da also sehr gut meinen PHP/HTML-Werdegang ...*G*)), aber das dauert - die liebe Zeit (und ausserdem will ich hier mit Templates arbeiten - da hab ich noch eine große Know-How-Umsetzungslücke). Zudem hab ich ein Script was sogar noch ein PHP kleiner 5.6 benötigt (ein altes MediaWiki was ich mit neueren PHP-Versionen nicht updaten kann aber schon länger MUSS!)

=> ich brauche also eine Lösung mit der ich bequem switchen kann.

Mein Webhoster (all-inkl.) regelt das über das Kundencenter je Domain ODER alternativ über .htaccess je ORDNER. Die .htaccess-Variante würde ich gerne umsetzen - damit bin ich am flexibelsten und muss nicht z.b. neue Sub-Sub-Domains etc. einfügen und ich kann von 2 PHP-Versionen (5.6.40 und 7.3.x) bequem auf 3-4 erweitern (7.4; 5.4) und switchen.

Leider hab ich noch nicht so ganz raus wie das funktioniert. Es wird im Netz doch eher die Domain-Variante bevorzugt beschrieben.

Meine Idealvorstellung wäre:
Ich habe ein PHP-Modul (7.3) und den Rest über Fast-CGI (mehrere Module gehen ja nicht). Ist keine (php-Change)-.htaccess vorhanden, wird das Modul verwendet. Bei meinem Hoster läuft das wohl auch so. 5.6 hat er als Modul und (ein zweites) 5.6-7.3 als FastCGI. Dadurch kann ich die vorhandenen VHOSTs weiter nutzen ohne wie gesagt: mal eben von 5.6 auf 7.x wechseln und wenn das doch nicht so das ware war, wieder 5.6.x ;)

Mir fehlt hier ein wenig der richtige Ansatz. Wie ich das bei meinem Hoster sehe, geht das zumindest mit Modul und CGI-Gemischt. Jetzt ist die frage: wie? WENN ich eine der sehr seltenen Anleitungen finde, dann immer ausschließlich CGI - und noch seltener htaccess.

Hoffe hier kann mir jemand ein wenig weiterhelfen ...

Grüße
wernerz
Mitglied
Beiträge: 125
Registriert: 22.10.2014 09:16
Kontaktdaten:

Re: Windows, Apache, 2+ PHP-Versionen. Wie konfigurieren?

Beitrag von wernerz »

Warum machst du dir keine virtuelle Maschine in der du das alte System am laufen hast, dann hast du eine saubere Trennung und kein seltsamen Vermischungseffekte.
Gruß Werner
Benutzeravatar
Wuppi
Mitglied
Beiträge: 732
Registriert: 14.05.2002 23:04
Wohnort: Köln
Kontaktdaten:

Re: Windows, Apache, 2+ PHP-Versionen. Wie konfigurieren?

Beitrag von Wuppi »

Eine VM/WSL (Windows Subsystem für Linux) gibt mir aber nicht die flexible Lösung die ich gerne hätte.

Eine VM/WSL muss ich ja auch erstmal erreichen. Global z.b. via weitere Portweiterleitung (home.meinedomain.tld:8056 und :8054 und :8074) oder per ProxyPass - wobei das auch wieder Fehleranfällig ist und nicht jede Anwendung damit klar kommt. Ich nutze via ProxyPass z.b. ein Calibre-Server - der Calibre muss explizit ProxyPass unterstützen und die Ansprechbarkeit auf diese weise aktiviert haben - so wird das auch bei anderen Anwendungen sein).

Und ProxyPass müsste ich trotzdem so konfigurieren das ich die Anwendungen gezielt ansprechen kann: home.meinedomain.tld/56, /54 bzw. /74. Mein Horror-Update-MediaWiki müsste ich also unter home.meinedomain.tld/54/mediawiki das erste mal updaten (bzw. testen, update erfolgt eh per cli...), dann müsste ich unter /56/mediawiki das Update machen was mir 7.3 kompatiblität bringt und unter /mediawiki dann das Finale update. Jedes mal müsst ich zudem in der Konfig den Pfad ändern... [und das Update ist horror - 3 verschiedene, sich widersprechende, offizielle Update-Anleitungen gibt es ... also hab ich bisher gefunden ...]

Jetzt hab ich meine Filmdatenbank die nur unter 5.6 läuft -> die muss ich dann mit /56/ oder 8056 ansprechen. Meine Musikdatenbank ist aber 7.x kompatible also / usw.

=> Das Problem ist das ich viele Anwendungen auf meinen Homeserver habe - mit einer PHP-Range von 5.4 bis 7.3 ... die ich einfach bequem ansprechen möchte ohne den richtigen Port, Domain bzw. "Versions"-Verzeichnis (/56/) - da ist die htaccess-Lösung die einfachste variante - auch wenn ich diese erstmal zum laufen bekommen muss... klar...

Und hier war ja die Frage ob das so geht:
7.3 -> Standard -> per Apache-Modul
5.4, 5.6, 7.4 -> per Fast-CGI
=> Die Konfig (also Apache-Modul + Fast-CGI) bietet ja mein Webhoster an - wie der das realisiert weiß ich natürlich nicht. Im Netz finde ich eher (schwer...) nur Anleitungen für Fast-CGI-only-Lösungen. Meistens aber VHOST-Lösungen (die ich nicht haben möchte - da ist jetzt von der umständlichkeit auch kein Unterschied zu WSL/VM). Das Thema Apache-Modul + Fast-CGI ist wohl etwas exotisch ;)
Benutzeravatar
chris1278
Mitglied
Beiträge: 3526
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Windows, Apache, 2+ PHP-Versionen. Wie konfigurieren?

Beitrag von chris1278 »

Das kannst du einfacher haben. Suche mit google nach apache for friends dort findest du diverse komplet pakete. Diese brauchst du nur zu installieren und fertig.
Benutzeravatar
Wuppi
Mitglied
Beiträge: 732
Registriert: 14.05.2002 23:04
Wohnort: Köln
Kontaktdaten:

Re: Windows, Apache, 2+ PHP-Versionen. Wie konfigurieren?

Beitrag von Wuppi »

Hab es jetzt hinbekommen ... noch nicht final ... Und so kompliziert ist es jetzt nicht.

Aktuell: php5.6 als Modul, php7.2 als cgi
Wichtig ist: das Modul muss die TS-Version sein, die CGI-Versionen MÜSSEN die NTS-Versionen sein.

httpd.conf

Code: Alles auswählen

LoadModule cgi_module modules/mod_cgi.so

ScriptAlias /php72 "C:/Server/webserver/php72nts"
Action application/x-httpd-php72-cgi /php72/php-cgi.exe
<Directory "C:/Server/webserver/php72nts">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
        Require all granted
    </Files>
</Directory>
In der .htaccess:

Code: Alles auswählen

<FilesMatch "\.php$">
	SetHandler application/x-httpd-php72-cgi
</FilesMatch>
Die htaccess zum testen liegt jetzt in /anwendungen/phpmyadmin5 (5 benötigt 7.x und läuft), in / liegt nichts - da wird mit php 5.6 ausgeliefert

Jetzt muss ich das nur noch "aufräumen". 7.3 als MODUL, 7.3 als CGI (s.u.), 5.6 als CGI, 5.4 CGI, 7.4 CGI - das schaffe ich nur gerade nicht :( Die nächsten Tage. Auch das "tunen" der PHP.ini fehlt noch (ich hoffe ich brauche imagemagik dann nicht mehr ... das ist horror einzurichten...)

Überschreiben sich htaccess-Anweisungen eigentlich eigentlich?

Angenommen: 7.3 ist jetzt der Serverstandard (Modul)
/ -> 7.3
/anwendungen -> 7.3
/anwendungen/irgendwas -> per htaccess auf 5.6 (CGI)
/anwendungen/irgendwas/update -> wäre jetzt ja erstmal 5.6 ... jetzt hab ich hier aber schon geänderten Code drin ... per htaccess auf 7.3 (CGI!)
=> Edit: Ich antworte mir mal selber - ja machen sie. Im Unter-Unterverzeichnis kann ich die CGI-Anweisung für 5.6 mit neuer htaccess für 7.4 aufheben.
Edit 2: Alles umgestellt. 7.4 jetzt default (Modul), 5.6, 7.2, 5.5 als CGI. Performance sogar recht gut (bei CGI muss ich nur den opcache deaktivieren - verträgt sie nicht mit http/2 - von der Performance)
Antworten

Zurück zu „Smalltalk“