7

对于使用 php-fpm 7.1.6 的 Apache 2.4.26,$_SERVER['SCRIPT_FILENAME'](和$_SERVER['PHP_SELF'])在文件夹上不正确:

阿帕奇 2.4.26:

/index.php

阿帕奇 2.4.25:

/myfolder/index.php

怎么了?

4

2 回答 2

10

我用这个新的配置指令在 apache 配置中修复了它:

ProxyFCGIBackendType GENERIC

在 SetHandler 指令之前的全局配置中。默认为 FPM,但在某些 php-fpm 配置(SetHandler 和套接字)中不正确。

有了这个错误,所有$_SERVER['SCRIPT_FILENAME']$_SERVER['PHP_SELF']Apache vars ( $_SERVER)(从 php-fpm 注入)都是错误的,它们没有路径!

ProxyFCGIBackendType 默认为 FPM,但对于许多配置来说是错误的。Apache httpd 应该默认添加 GENERIC 以不破坏网站。

请参阅:https ://httpd.apache.org/docs/2.4/en/mod/mod_proxy_fcgi.html#proxyfcgibackendtype

于 2017-06-20T15:36:59.243 回答
1

(作为评论会更好,但我低于最低代表。)

就像 neoteknic 在他们的回答中指出的那样,GENERIC在我们解决这个错误时,使用后端类型会将您恢复为 2.4.25 行为。

但是请注意,2.4.25 的行为也破坏了其他一些人,并不是万能的。如果您处于绑定状态,新ProxyFCGISetEnvIf指令可以让您直接控制 FCGI 环境变量,并且如果您需要,它可以接受一些非常复杂的操作的 httpd 表达式语法。这仅在您了解这些环境变量应该是什么时才有帮助,但这是另一种选择。

于 2017-06-23T18:29:37.063 回答