【发布时间】:2021-05-14 08:07:17
【问题描述】:
我根据this guide 安装了多个版本的PHP,我写的。 基本上,它是在 Windows 10 上通过 FastCGI 与 PHP 对话的 ApacheLounge 安装。 这曾经让我在不同的虚拟主机上同时运行这些 PHP 版本。 Apache 通过 FastCGI 在这些端口上调用正确的 PHP 版本:
- PHP 5.2.17 端口 9052
- PHP 5.3.29 在端口 9053
- PHP 5.4.45 在端口 9054
- PHP 5.5.38 在端口 9055
- PHP 5.6.40 在端口 9056
- PHP 7.0.33 在端口 9070
- PHP 7.1.33 在端口 9071
- PHP 7.2.31 在端口 9072
- PHP 7.3.19 在端口 9073
- PHP 7.4.7 在端口 9074
一切其中一些在安装后已经工作了一段时间。昨天我不得不在 PHP 5.6 上测试一个网站,但输出只是一个“没有指定输入文件的消息”,事实证明,它不像 quick google search confirmed 那样具有描述性。
所以我开始了一个系统的方法。 我为每个 PHP 版本创建了一个 VirtualHost,只有一个带有 echo 语句的 index.php 文件。 我测试了安装的所有 PHP 版本,所有 PHP5 版本都无法正常工作,而 PHP7 版本正常工作。
我删除了所有自定义配置文件。没有变化。
我提供了一个简单的 index.html 文件,它适用于所有虚拟主机。关于 PHP,没有变化。
我以为是 PHP 5.x 的错误,但在我重新启动电脑后,PHP 5.2 版本开始工作。 我停止、删除并重新安装了一些通过 NSSM 创建的 Windows 服务,没有任何变化。
这是我认为我知道的:
- 这不是 PHP 5.x 的问题,因为 PHP 5.2 可以工作;
- 这不是FastCGI问题,因为所有的VirtualHosts都有相同的配置,除了端口号;
- 这不是 Apache 配置问题,因为它启动和停止并重新启动和服务;
- 不是PHP配置问题,因为所有配置都是标准的;
- 不是.htaccess配置问题,因为没有.htaccess文件;
感谢您对如何调试此配置或出现问题的任何想法。
谢谢。
【问题讨论】:
-
要调试,您可能应该查看从 apache 发送到 php-fpm 端口的 fascgi 协议数据的内容。为此,您可以使用 Wireshark 之类的工具。
-
我确认 php 5.3 设置
php.ini:doc_root与httpd.conf:document_rootWORKS 相同。问题是如果VirtualHost:DocumentRoot不同,它显然不起作用。如果我有多个具有不同 DocumentRoot 的虚拟主机...
标签: php windows apache fastcgi nssm