IIS 如何“知道”哪个网站使用哪个 PHP 版本?

IIS 如何“知道”哪个网站使用哪个 PHP 版本?

我在同一个使用 IIS 10 的应用程序池上有 2 个网站。其中一个是使用 PHP 7.3 的 PHP 应用程序,第二个应用程序是使用 PHP 8.1 的同一个应用程序的更新版本。

现在我只是将较新的应用程序复制到C:/inetpub文件夹中,然后.exe通过处理程序映射添加了 PHP 8.1 FastCGI 模块()。

因此现在处理程序映射显示 2 个 FastCGI 模块:一个具有 PHP 8.1 文件夹的路径,另一个具有 PHP 7.3 文件夹的路径。

当我phpinfo()在每个应用程序上使用时,它显示每个应用程序都使用正确的 PHP 版本 - 旧应用程序使用 PHP 7.3,而新应用程序使用 PHP 8.1

我重新启动了网站,但显示相同的信息后它仍然有效。

但是这种情况在 IIS 上发生在哪里?我在哪里将模块与特定站点匹配?这很重要,因为它们不向后兼容,在我将 Handler Mappings 中的路径添加到 PHP 8.1 之前,我在新网站上收到一条错误消息,提示它需要 PHP >8.1。

但是,一旦我添加了 PHP 8.1 Fast CGI 模块,它就会自动检测到它,并自动将其分配给新网站。但是怎么做呢?如果我想将其专门映射到某个网站而不让它自动检测到它,该怎么办?为什么它不尝试将 PHP 8.1 FastCGI 模块分配给旧应用程序?

更新:我认为我错了:每个网站都有自己的处理程序映射,只是在我的情况下,它首先“复制”了一些默认映射,而我只是在其中添加了 PHP 8.1。因此,看起来有一些“全局”处理程序映射设置在您创建新网站时分配,然后您可以专门针对该网站进行修改,这就是我所做的。我只是感到困惑,因为我看到它与我在整个服务器窗口上选择的处理程序映射相同。

因此我相信,起初全局处理程序映射被设置为 PHP 7.3 应用程序(因为我只有一个应用程序,所以并没有真正检查我编辑了哪些处理程序映射),当我添加新网站时它就使用了它们。 (但是当我专门为新应用程序删除 PHP 7.3 的映射时,它并没有从 7.3 应用程序中删除它)

相关内容