Apache 2.4.26 中的错误 SCRIPT_FILENAME & PHP_SELF

Wrong SCRIPT_FILENAME & PHP_SELF in Apache 2.4.26

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

阿帕奇 2.4.26:

/index.php

阿帕奇 2.4.25:

/myfolder/index.php

怎么了?

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

ProxyFCGIBackendType GENERIC

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

由于这个错误,所有 $_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 在 中指出的那样,使用 GENERIC 后端类型将在我们解决此错误时将您恢复到 2.4.25 行为。

但是请注意,2.4.25 行为 breaks some other people too and is not a panacea. If you're in a bind, the new ProxyFCGISetEnvIf directive 可以让您直接控制 FCGI envvars,并且它接受一些非常复杂的操作的 httpd 表达式语法,如果您需要的话。这只有在您了解这些环境变量应该是什么的情况下才会有所帮助,但这是另一种选择。