Apache 2.4.26 中的 SCRIPT_FILENAME 和 PHP_SELF 错误

Posted

技术标签:

【中文标题】Apache 2.4.26 中的 SCRIPT_FILENAME 和 PHP_SELF 错误【英文标题】:Wrong SCRIPT_FILENAME & PHP_SELF in Apache 2.4.26 【发布时间】:2017-11-23 06:02:34 【问题描述】:

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

Apache 2.4.26:

/index.php

Apache 2.4.25:

/myfolder/index.php

怎么了?

【问题讨论】:

【参考方案1】:

我用这个新的配置指令在 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

【讨论】:

FWIW 他们已经意识到了这一点,并正在为下一个版本而努力。 也为我工作。将其添加到 etc/sites-available 文件的顶部 你知道我如何在 puphpet/vagrant 设置中修复/更改这个吗? @Michael:将其添加到您的 .htaccess 或 PuPHPet 的虚拟主机级自定义指令中。 @leek 谢谢,将它添加到 htaccess 作品中。但我不明白我必须在“PuPHPet 的虚拟主机级自定义指令”中更改什么/在哪里更改它。你的意思是config.yaml还是puphpet文件夹中的文件之一?【参考方案2】:

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

就像 neoteknic 在 their answer 中指出的那样,使用 GENERIC 后端类型将在我们解决此错误时将您恢复为 2.4.25 行为。

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

【讨论】:

以上是关于Apache 2.4.26 中的 SCRIPT_FILENAME 和 PHP_SELF 错误的主要内容,如果未能解决你的问题,请参考以下文章

一次wamp搭建过程

Mongodb 官网驱动2.2.4.26版本 增,删 改,查,mongodb2.2.4.26

SugarCRM CE 部署除错

PHP5.3.3升级PHP7.1.6

r Apache中的Apache Spark

apache_conf 阻止Apache中的蜘蛛