错误SCRIPT_FILENAME&PHP_SELF中的Apache 2.4.26

问题描述:

与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

+0

FWIW他们意识到这一点,并为它的下一个版本工作。 –

+2

也为我工作。在etc/sites-available文件的顶部添加它 – lprent

+0

你知道我是如何修改/改变这个内部的一个puphpet/vagrant设置吗? – Michael

(这将是一个更好的评论,但我最小的代表下我。)

像neoteknic点出their answer,使用GENERIC后端类型将恢复你2.4.25行为,而我们得到这个错误解决。

但是,请注意,2.4.25行为breaks some other people too并不是万能的。如果您处于绑定状态,新的ProxyFCGISetEnvIf directive可以让您直接控制FCGI环境,并且如果您需要它们,它可以接受httpd表达式语法来执行一些非常复杂的操作。这只有在你明白那些环境应该是什么的时候才有用,但这是另一种选择。