![什么决定了 Apache PHP 处理程序的名称?](https://linux22.com/image/785886/%E4%BB%80%E4%B9%88%E5%86%B3%E5%AE%9A%E4%BA%86%20Apache%20PHP%20%E5%A4%84%E7%90%86%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%90%8D%E7%A7%B0%EF%BC%9F.png)
当配置 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 模块,以便从不同版本中进行选择。如果您无法控制安装,则始终需要遵循有关安装和使用内容的文档。