什么决定了 Apache PHP 处理程序的名称?

什么决定了 Apache PHP 处理程序的名称?

当配置 Apache 服务器以使用 Handler 运行 PHP 代码时,我熟悉在httpd.conf或中添加类似于下面的一行.htaccess

添加处理程序应用程序/x-httpd-php81.php

这告诉 Apache 使用命名的处理程序来解释 .php 文件。这很简单,但在不同的托管服务和本地,我看到处理程序使用的特定名称存在差异,这使我的环境配置变得复杂。作为一个具体示例,在托管的 Web 服务器上,该行必须包含 PHP 版本,如上所示,但在本地安装的 Apache 服务器和从 php.net 下载的 PHP 中,名称更通用:

添加处理程序应用程序/x-httpd-php.php

在其他情况下,我还看到了一些其他变化,例如:

AddHandler 应用程序/x-httpd-ea-php81___lsphp

什么决定了支持/需要哪些名称?在线搜索没有找到任何有效名称的来源,只有不同托管环境的配置示例。有什么简单的方法可以影响本地安装中预期的名称吗?

答案1

最常见的情况是,在安装了多个 PHP 版本的共享主机上,您会看到指定 PHP 版本的变体;这是因为某些用户可能正在运行与较新版本不兼容的网站,因此每个虚拟主机都定义了一个与该网站兼容的 PHP 处理程序。特别是 ea- 版本由 EasyApache 套件提供,(以我有限的经验)用于通过 cPanel 提供访问权限的主机。特定名称通常是主机本地的,您必须与您的托管组核实他们安装了哪些 PHP 版本以及他们如何称呼它们。

答案2

我搜索了同样的问题,但找不到答案,所以我扩大了搜索范围,找到了一个相关但不相同的问题,其中评论导致github.com/php/php-src/blob/master/sapi/apache2handler/…

因此,我期望已编译的 Apache 模块能够自行定义,而托管商实际上可能会编译其(多个)Apache 模块,以便从不同版本中进行选择。如果您无法控制安装,则始终需要遵循有关安装和使用内容的文档。

相关内容