在 XAMPP 的文档中,有一个关于如何使用 XAMPP 使用旧版本 PHP 的 HOW-TO。第一步,它说明了以下内容:
从 PHP 网站下载您想要使用的 PHP 版本的二进制版本,并将压缩存档文件的内容提取到您的 XAMPP 安装目录(通常为 C:\xampp)。请确保为其指定不同的目录名称,以避免覆盖现有的 PHP 版本。例如,在本教程中,我们将新目录命名为 C:\xampp\php5-6-0。
确保您下载的 PHP 版本与 XAMPP 平台中的 Apache 版本(VC9 或 VC11)相匹配。
我关心的是 Apache 的匹配版本。我找不到有关如何安装旧版本的 Apache 以匹配 PHP 版本的资源。这真的不重要吗,还是我应该只安装旧版本的 PHP,在我的情况下,它使用 VC11,它应该与 VC15 兼容。
答案1
当你尝试获得php
或的副本apache
。首先看看版本其中,这是兼容的和。最佳方向;决定Apache
要运行的哪个版本。下载、安装,然后对 执行相同操作PHP
。这并不难。只需访问相关网站,并查找(最低)要求即可。例如;要求:Apache >= 2.2
。他们非常擅长指示这类事情。尝试下载部分。找到您想要运行的版本。然后找到“要求”。
高血压
答案2
我找不到有关如何安装旧版本的 Apache 以匹配 PHP 版本的资源。
XAMMP 本质上是通常独立程序的前端。因此,Apache 可以(技术上)以与 PHP 类似的方式进行替换。也就是说,您可以下载例如使用 VC11 构建的 Apache 2.4.38并用它代替使用 VC15 构建的 Apache 2.4.39(这是 XAMMP 的当前默认设置)。
注意事项
使用 Apache 的过程并不完全是“拖放”式的。您需要从原始 XAMMP Apache 安装中复制一些文件和文件夹(那些在您下载的 Apache 版本中不存在的文件和文件夹)。
在主apache
目录中,这些包括:
文件
scripts
夹。apache_installservice.bat
apache_uninstallinstallservice.bat
makecert.bat
还要注意conf
文件夹。它包含 Apache 的实际配置,以及一些专门用于 XAMMP 的额外文件。Apache 2.4.38 和 Apache 2.4.39 应该足够接近,因此您可以(可能)conf
用 XAMMP 的版本替换下载的 Apache 版本中的整个文件夹。
安装旧版本的 PHP 时,您还需要进行更新XAMMP\apache\conf\extra\httpd-xampp.conf
以正确引用 PHP 5 而不是 PHP 7(大约有 3 行需要更新):
例如 httpd-xampp.conf (部分)
# LoadFile "C:/Programs/XAMMP/php/php7ts.dll"
# LoadFile "C:/Programs/XAMMP/php/libpq.dll"
# LoadModule php7_module "C:/Programs/XAMMP/php/php7apache2_4.dll"
LoadFile "C:/Programs/XAMMP/php/php5ts.dll"
LoadFile "C:/Programs/XAMMP/php/libpq.dll"
LoadModule php5_module "C:/Programs/XAMMP/php/php5apache2_4.dll"
[...]
# <IfModule php7_module>
<IfModule php5_module>
PHPINIDir "C:/Programs/XAMMP/php"
</IfModule>
请注意,PHP 的非线程安全 (NTS) 版本适用于 IIS。线程安全 (TS) 版本适用于 Apache,并且是唯一包含 和 等的发行php5ts.dll
版php5apache2_4.dll
。
我对 PHP 和 Apache 的一个建议是保留原始 XAMMP 版本(即简单地重命名文件夹),至少直到您可以确认一切都按您希望的方式运行。
请注意,如果您将 Apache 安装为服务,则可能需要停止该服务(根据需要),然后通过 XAMMP 界面卸载/重新安装该服务。
根据您的安装,可能还有一些我未在此处介绍的其他步骤可使一切正常运行。
这真的很重要吗,还是我应该只安装旧版本的 PHP(在我的情况下使用 VC11)并且它应该与 VC15 一起工作?
不幸的是,据我所知,使用 VC15(VC15 是重要部分)构建的 Apache 2.4.39 不适用于在 VC11 下构建的 PHP(尽管它可能适用于在 VC14 下构建的任何版本的 PHP)。
过去,解决此问题的一种方法是使用mod_fcgid
,而不是直接将 PHP 作为模块运行。但是,我认为 的当前版本mod_fgcid
不再适用于 PHP 5.5(尽管较新的版本可能适用于 PHP 5.6+)。