與Apache 2.4.26使用PHP-FPM 7.1.6,$_SERVER['SCRIPT_FILENAME']
(和$_SERVER['PHP_SELF']
)是一個文件夾上不正確的:錯誤SCRIPT_FILENAME&PHP_SELF中的Apache 2.4.26
阿帕奇2.4.26:
/index.php
的Apache 2.4.25:
/myfolder/index.php
有什麼不對?
與Apache 2.4.26使用PHP-FPM 7.1.6,$_SERVER['SCRIPT_FILENAME']
(和$_SERVER['PHP_SELF']
)是一個文件夾上不正確的:錯誤SCRIPT_FILENAME&PHP_SELF中的Apache 2.4.26
阿帕奇2.4.26:
/index.php
的Apache 2.4.25:
/myfolder/index.php
有什麼不對?
我這個新的配置指令固定它的Apache配置:
ProxyFCGIBackendType GENERIC
在全球配置中SetHandler指令之前。默認是FPM,但對某些php-fpm配置(SetHandler和套接字)不正確。
有了這個bug全部$_SERVER['SCRIPT_FILENAME']
和$_SERVER['PHP_SELF']
Apache變量($_SERVER
)(從php-fpm注入)是錯誤的,他們沒有路徑!
ProxyFCGIBackendType默認爲FPM,但對許多配置而言都是錯誤的。 Apache httpd應該添加GENERIC作爲默認不破壞網站。
參見:https://httpd.apache.org/docs/2.4/en/mod/mod_proxy_fcgi.html#proxyfcgibackendtype
(這將是一個更好的評論,但我最小的代表下我。)
像neoteknic點出their answer,使用GENERIC
後端類型將恢復你2.4.25行爲,而我們得到這個錯誤解決。
但是,請注意,2.4.25行爲breaks some other people too並不是萬能的。如果您處於綁定狀態,新的ProxyFCGISetEnvIf
directive可以讓您直接控制FCGI環境,並且如果您需要它們,它可以接受httpd表達式語法來執行一些非常複雜的操作。這隻有在你明白那些環境應該是什麼的時候纔有用,但這是另一種選擇。
FWIW他們意識到這一點,併爲它的下一個版本工作。 –
也爲我工作。在etc/sites-available文件的頂部添加它 – lprent
你知道我是如何修改/改變這個內部的一個puphpet/vagrant設置嗎? – Michael