Unerklärlich, einfaches Ändern der Hinter /
zu einem #
scheint das Problem zu beheben:
<Files ~ "\.(php|phtml)$">
SetHandler "proxy:fcgi://127.0.0.1:9000#"
</Files>
Bei dem Versuch, dies zu verstehen Ich habe Apache zu LogLevel debug
(Zeitstempel/module/Prozessdetails der Kürze entfernt):
/
Verwendung gibt:
mod_proxy_fcgi.c(911): [client ::1:60730] AH01076: url: fcgi://127.0.0.1:9000/E:/test/webroot/test.php proxyname: (null) proxyport: 0
mod_proxy_fcgi.c(920): [client ::1:60730] AH01078: serving URL fcgi://127.0.0.1:9000/E:/test/webroot/test.php
proxy_util.c(2154): AH00942: FCGI: has acquired connection for (*)
proxy_util.c(2208): [client ::1:60730] AH00944: connecting fcgi://127.0.0.1:9000/E:/test/webroot/test.php to 127.0.0.1:9000
proxy_util.c(2417): [client ::1:60730] AH00947: connected /E:/test/webroot/test.php to 127.0.0.1:9000
Mit #
gibt:
mod_proxy_fcgi.c(911): [client ::1:60738] AH01076: url: fcgi://127.0.0.1:9000#E:/test/webroot/test.php proxyname: (null) proxyport: 0
mod_proxy_fcgi.c(920): [client ::1:60738] AH01078: serving URL fcgi://127.0.0.1:9000#E:/test/webroot/test.php
proxy_util.c(2154): AH00942: FCGI: has acquired connection for (*)
proxy_util.c(2208): [client ::1:60738] AH00944: connecting fcgi://127.0.0.1:9000#E:/test/webroot/test.php to 127.0.0.1:9000
proxy_util.c(2417): [client ::1:60738] AH00947: connected to 127.0.0.1:9000
Der entscheidende Unterschied in der letzten Zeile zu sein scheint, wo die zweite (Arbeits-) Methode scheint nicht etwas als Wert übergeben anmelden zu der PHP-Prozess.
Ich bin nicht in der Lage dies zu erklären und kann nirgends davon erwähnt werden. (Vielleicht eine mutigere Seele als ich wäre bereit, in die Apache und/oder PHP-Quelle zu untersuchen.)
Beachten Sie, dass ich dies nicht über den Lauf phpinfo()
getestet habe so würde es nicht für einen Produktionsserver empfehlen.
bearbeiten
Dies funktioniert für PHP 7.0, aber mit PHP 5.6 ich immer noch die 'No Eingabedatei angegeben' Fehler.
bearbeiten 2
Und die Arbeit mit Apache 2.4.25, nicht aber die vor kurzem 2.4.26 veröffentlicht!
Dies scheint eine Inkompatibilität Minenfeld zu sein, die explizit in der CHANGES_2.4.26 Datei erwähnt wird:
mod_proxy_fcgi: Zurück zum 2.4.20-und-einem früheren Verhalten von ein „Proxy verlassen: fcgi:// "Präfix in der Umgebungsvariablen SCRIPT_FILENAME von Standard. Fügen Sie ProxyFCGIBackendType hinzu, damit der Backend-Typ angegeben werden kann, damit diese Arten von Korrekturen ohne Auswirkungen auf FPM wiederhergestellt werden können. PR60576 [Eric Covener, Jim Jagielski]
Die documentation wurde aktualisiert, dies zu reflektieren:
Ein Beispiel für Werte, die von der Einstellung dieser Richtlinie basiert Änderung ist SCRIPT_FILENAME. Bei der historischen Verwendung von mod_proxy_fcgi wurde SCRIPT_FILENAME der Präfix "proxy: fcgi: //" vorangestellt. Diese Variable würden einige generische FastCGI-Anwendungen als Skripteingabe lesen, aber PHP-FPM würde das Präfix entfernen und sich dann daran erinnern, dass es mit Apache gesprochen hat. In 2.4.21 bis 2.4.25, wurde dieses Präfix automatisch vom Server entfernt, wodurch die Fähigkeit von PHP-FPM zur Erkennung und Interoperation mit Apache in einigen Szenarien durchbrochen wurde.
Können Sie mit LogLevel debuggen proxy_fcgi: trace8 und/oder senden Sie Anfragen an diese Dummy-Debug FCGI? https://bz.apache.org/bugzilla/show_bug.cgi?id=51517#c3 – covener
Wenn Sie 'telnet localhost 9000' verwenden, kommen Sie dann durch? Ist der Port tatsächlich offen? – h2ooooooo
Haben Sie es geschafft, es zu beheben? Ich bin mit ApacheLounge 2.4.26 und ich habe das gleiche Problem. –