有没有办法在 XAMPP 中使用两个 PHP 版本?
Posted
技术标签:
【中文标题】有没有办法在 XAMPP 中使用两个 PHP 版本?【英文标题】:Is there way to use two PHP versions in XAMPP? 【发布时间】:2021-04-20 21:41:46 【问题描述】:我们使用 php 7.0 运行 XAMPP,因为我们的新产品需要 PHP 7。
但有些旧项目使用mysql_connect
等函数。这些在 PHP 7.0 中被删除。
那么,有没有办法在 XAMPP 中轻松更改 PHP 版本?
注意:请不要建议升级旧项目以兼容新版本,因为我无法这样做 作为一名开发人员(只是一名员工),我无法做出决定。
【问题讨论】:
我认为除了升级之外没有其他解决方法。此外,您不应该寻找使旧的和已弃用的 API 兼容的方法。它们应该被完全删除。显然这是很多工作,但它可以保证安心 当我想在 MAMP 中切换 PHP 版本时,我会停止并启动 Apache。这很痛苦,但它有效。 你可以双启动 您可以创建虚拟主机,然后为每个主机指定php版本 @IlmariKaronen 我想在您的开发工作站上切换它们。只是我想在做项目 A 时使用 PHP 5,我在做项目 B 时想要 PHP 7。即使是评分最高的答案也不起作用,我找不到它......还有很多用户......跨度> 【参考方案1】:当您可以通过单个 xampp 安装同时使用多个 PHP 版本时,为什么要在 PHP 版本之间切换?
使用单个 xampp 安装,您有 2 个选项:
仅为旧项目的目录运行较旧的 PHP 版本:这将在大多数情况下达到目的。您可能有一个或两个旧项目打算使用较旧的 PHP 版本运行。只需将 xampp 配置为仅针对这些项目目录运行较旧的 PHP 版本。
在单独的 xampp 端口上运行较旧的 PHP 版本: 有时您可能正在将旧项目升级到最新的 PHP 版本,同时您需要来回运行相同的项目新 PHP 版本和旧 PHP 版本之间。为此,您可以在不同的端口(例如 8056)上设置较旧的 PHP 版本,因此当您转到 http://localhost/any_project/
时,xampp 运行 PHP 7,而当您转到 http://localhost:8056/any_project/
时,xampp 运行 PHP 5.6。
在虚拟主机上运行较旧的 PHP 版本:您可以创建一个像 localhost56 这样的虚拟主机来运行 PHP 5.6,同时您可以在 localhost 上使用 PHP 7。
让我们设置一下
第 1 步:下载 PHP
所以你有 PHP 7 在 xampp 下运行,你想向它添加一个旧的 PHP 版本(比如 PHP 5.6)。从php.net 下载 nts(非线程安全)版本的 PHP zip 压缩包(旧版本请参阅archive)并解压缩c:\xampp\php56
下的文件。线程安全版本不包含php-cgi.exe。
第二步:配置php.ini
在记事本中打开文件c:\xampp\php56\php.ini
。如果该文件不存在,请将php.ini-development
复制到php.ini
并在记事本中打开。然后取消注释以下行:
extension_dir = "ext"
如果 Apache 配置中存在以下行 httpd-xampp.conf
SetEnv PHPRC "\\path\\to\\xampp\\php"
使用前导 #(哈希字符)将其注释掉。
第 3 步:配置 apache
打开xampp控制面板,点击apache的config按钮,点击Apache (httpd-xampp.conf)
。将打开一个文本文件。将以下设置放在文件底部:
ScriptAlias /php56 "C:/xampp/php56"
Action application/x-httpd-php56-cgi /php56/php-cgi.exe
<Directory "C:/xampp/php56">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
</Directory>
注意: 如果需要,您可以按照步骤 1 到 3 将更多版本的 PHP 添加到您的 xampp 安装中。
第 4 步(选项 1): [添加目录以运行特定的 PHP 版本]
现在您可以设置将在 PHP 5.6 中运行的目录。只需在配置文件底部添加以下内容(步骤 3 中的httpd-xampp.conf
)即可设置目录。
<Directory "C:\xampp\htdocs\my_old_project1">
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</Directory>
<Directory "C:\xampp\htdocs\my_old_project2">
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</Directory>
第 4 步(选项 2): [在单独的端口上运行较旧的 PHP 版本]
现在要在端口 8056 上设置 PHP v5.6,请将以下代码添加到配置文件的底部(步骤 3 中的httpd-xampp.conf
)。
Listen 8056
<VirtualHost *:8056>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</VirtualHost>
第 4 步(选项 3): [在虚拟主机上运行较旧的 PHP 版本]
要在目录 (htdocs56) 上创建虚拟主机 (localhost56) 以在 http://localhost56 上使用 PHP v5.6,请在所需位置创建目录 htdocs56 并
将 localhost56 添加到您的主机文件 (see how),
然后将以下代码添加到配置文件的底部(步骤 3 中的httpd-xampp.conf
)。
<VirtualHost localhost56:80>
DocumentRoot "C:\xampp\htdocs56"
ServerName localhost56
<Directory "C:\xampp\htdocs56">
Require all granted
</Directory>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</VirtualHost>
完成:保存并重新启动 Apache
保存并关闭配置文件。从 xampp 控制面板重新启动 apache。如果您选择选项 2,您可以在 xampp 控制面板中看到额外的端口 (8056)。
【讨论】:
嗨,我正在尝试这种方法(步骤 4 选项 1),但从脚本 'php-cgi.exe' 中得到错误格式错误的标头:错误标头:,任何想法可以问题出在哪里? @MunimMunna 更新了上面的帖子后,这对我有用。正如建议的那样,我必须注释掉 SetEnv PHPRC 行以停止格式错误的错误通知。特别感谢 Muim 在完成这项工作方面提供的出色帮助。 答案甚至不再包含包含SetEnv PHPRC
的代码,所以我无法将其注释掉,但我仍然收到该错误。 :(
嗨。当我运行 localhost:8056 时,我得到 object not found 页面。
有人能够使用 xdebug 处理多个 php 版本吗?我得到了Error message: End of script output before headers: php-cgi.exe
【参考方案2】:
您可以下载任何您需要的 PHP 版本并将它们放置到它们自己的目录中,例如
c:\php5\
c:\php7\
您需要做的就是告诉您的 Web 服务器 (Apache) 使用哪个版本的 PHP,您可以通过加载相应的模块来完成。在 Apache 中,您可以通过找到文件 httpd.conf
然后编辑相应的行来做到这一点:
LoadModule php7_module c:\php7\libphp7.so
当然,您必须找出正确的路径 - 这只是为了说明。
保存httpd.conf
并重新启动您的服务器。请注意,如果您不重新启动它,更改将不会生效。
没有 GUI 开关可以做到这一点,您需要编辑 .conf
文件,然后重新启动 Apache。这样做只需要几秒钟,您甚至可以注释掉一个版本,因此“切换”只需要几次击键,例如
使用 PHP 5:
LoadModule php5_module c:\php5\libphp5.so
#LoadModule php7_module c:\php7\libphp7.so
使用 PHP 7:
#LoadModule php5_module c:\php5\libphp5.so
LoadModule php7_module c:\php7\libphp7.so
您不需要多个版本的 XAMPP,也不需要双启动,或使用不同的机器,或任何其他建议复杂变通方法的“解决方案”。 OP 想要使用 XAMPP 并告诉它使用哪个版本的 PHP。这是最快、最有效的方法,并且只需要安装一个 XAMPP。
2017 年 11 月 1 日编辑: 显然有些人说 Windows 上没有 .so
文件。我给出的答案改编自我在 Mac 上的设置方式(它使用.so
文件而不是.dll
)。然而,答案的原则仍然是完全正确的。您正在使用 Apache 的配置文件 httpd.conf
来指定 PHP 模块(.so
或 .dll
)在您的系统上的位置。因此,Windows 的唯一区别是文件名和/或路径位置。我给出的答案对于 Apache/PHP 的香草安装也是正确的(根本没有 XAMPP)。
【讨论】:
我再次检查。我找不到。你能检查一下我的 httpd.conf 文件吗?这是它的副本。 freetexthost.com/sjxz4lh1i5如果您发现我应该更改的那一行,请告诉我。 XAMPP 中没有任何 libphp7.so,conf 文件中没有任何 LoadModule 字符串 我也找不到这个条目。我还搜索了我的 php 目录,根本找不到任何 .so 文件。 在 v3.2.2 中,该行位于 xampp/apache/conf/extra/httpd-xampp.conf 不只是一行。您必须编辑 httpd-xampp.conf 的大部分内容。所以最好每次都切换整个httpd-xampp.conf。【参考方案3】:你可以download 和我一样安装两个不同的xampps:(第一个是php7 第二个是php5)
如果您不想这样做,我建议您使用 wamp 并更改版本,如 here 所示。
【讨论】:
你为什么要这样做?您再次安装了许多相同的软件,只是为了微小的差异(不同版本的 PHP,而 Apache 和 MySQL 等软件的其余部分完全相同)。我已经发布了一个解决方案,您可以简单地使用 1 个 XAMPP 安装并将其指向适当的 PHP 版本。 你为什么要这样做?因为它有效,而且我不介意安装多个 apache 和 mysql,如果这样可以节省一些时间。 这里不需要关心最佳实践,这是本地环境 我使用这种方法,此外,我建议您为每个安装添加特定的开始菜单条目,例如:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\XAMPP56 和 C:\以 ProgramData\Microsoft\Windows\Start Menu\Programs\XAMPP7 为例 如果这不是一个好的解决方案,为什么不发布正确的解决方案?实际上在同一个 xampp 上安装 2 个版本非常困难,而且这里的所有解决方案都是错误的......【参考方案4】:我推荐使用 Docker,这可以让您将环境拆分为各种组件,并随时混合搭配您想要的组件。
Docker 将允许您使用 MySQL 运行一个容器,使用 PHP 运行另一个容器。由于它们是单独的图像,因此您可以拥有两个容器,一个 PHP 5 另一个 PHP 7,您可以根据需要启动任何一个,并且端口 80 可以映射到两个容器。
https://hub.docker.com 有大量预配置的映像,您可以轻松安装和运行这些映像。
我还添加了portainer 作为图像,它允许您从 docker 图像中管理 docker 设置的各个方面(我确实在启动时启动了这个容器,以节省我必须使用命令行)。它并不能为您完成所有工作,有时从命令行首次配置和启动图像会更容易,但是一旦设置好,您就可以通过 Web 界面启动和停止它们。
还可以同时运行两个容器并将单独的端口映射到每个容器。所以端口 80 可以映射到 PHP 5 和 81 到 PHP 81(或者 PHP 7,如果你在 2017 年观看的话)。
关于如何安装 Docker(https://docs.docker.com/engine/installation/) 和大量其他“如何”输入内容的教程有很多。尝试http://www.masterzendframework.com/docker-development-environment/ 进行开发环境配置。
【讨论】:
我支持这个。帮您的公司一个忙,让 Docker 运行起来。切换 PHP 版本,更快地加入新开发人员,使部署更容易,并且在生产中没有意外。 和 81 到 PHP 81。 你是说 PHP 7 吗?我认为我们距离 PHP 81 还有些距离:) Errrr...我的意思是 81(我确保我的答案是未来的证明:-/) @NigelRen 我没有否决它,但我猜这是因为您提议使用完全不同的解决方案(Docker),而不是解决它在 XAMPP 中的可能性 - 它肯定是。您的回答是该问题的(非常好的)替代解决方案,但不是对所提出问题的回答。 2021 年的 FWIW:Docker 在 Windows 上非常不可用,由于 WSL 模块似乎在访问文件方面存在怪癖,因此速度非常慢。你最好使用 xampp 或 wamp。【参考方案5】:我使用 Uniserver。
它内置了这个功能。
http://www.uniformserver.com/
就这么简单。
Uniform Server 是适用于 Windows 的免费轻量级 WAMP 服务器解决方案。小于 24MB,模块化设计,包括最新版本的 Apache2、Perl5、PHP(在 PHP53、PHP54、PHP55 或 PHP56 之间切换)、MySQL5 或 MariaDB5、phpMyAdmin 或 Adminer4。无需安装!没有注册表灰尘!只需打开包装并开火!
它甚至可以使用闪存驱动器。具有 cron 仿真、对 perl、mariaDB、几个版本的 Mysql、filezilla 服务器和其他一些东西的支持。
【讨论】:
这是我认为最好的解决方案。我救了我的命。 我收到了病毒警报。 Win32/Uwamson.A!ml【参考方案6】:我正在从事一个已有十年历史的项目。所以 5.6 是我的默认值。还有一些旧的小项目只适用于 5.2,我也想为我的个人项目使用 7.3.8 开发新版本
这是我在默认 5.6 版本上添加 5.2 和 7.3.8 所做的。
1 - 下载的 php TS 版本;
v7.3.8(最新):https://windows.php.net/download/
v5.2:https://www.apachelounge.com/viewtopic.php?t=7349
2 - 按顺序解压到 c:\xampp\php738 和 c:\xampp\php52 文件夹
3 - 将这些行添加到 httpd-xampp.conf(或 httpd.conf)的底部;
*** 重要提示:您不应使用脚本别名作为目标文件夹名称, 他们一定是不同的。 (例如 /php7x 可以,/php7 不行)
PHP 7.3.8 用于文件夹 D:\www\php7
ScriptAlias /php7x "C:/xampp/php738"
Action application/x-httpd-php7-cgi /php7x/php-cgi.exe
<Directory "C:/xampp/php738">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
</Directory>
<Directory "D:\www\php7">
<FilesMatch "\.php$">
SetHandler application/x-httpd-php7-cgi
</FilesMatch>
</Directory>
文件夹 D:\www\php52 的 PHP 5.2
ScriptAlias /phpold "C:/xampp/php52"
Action application/x-httpd-phpold-cgi /phpold/php-cgi.exe
<Directory "C:/xampp/php52">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
</Directory>
<Directory "D:\www\php52">
<FilesMatch "\.php$">
SetHandler application/x-httpd-phpold-cgi
</FilesMatch>
</Directory>
一些有用的注释:
如果您在使用 composer 切换终端到 7.3.8 时遇到 php5.x 问题 如果您想将 php 7.3.8 设为 Windows 上的默认命令行 php 解释器,只需将 php 的 Windows 环境路径更改为 7.3.8 文件夹路径即可。 不要忘记在每个版本文件夹中根据需要编辑相关的 php.ini 配置文件。最后一点,如果您需要使用任何版本设置虚拟主机,您可以使用类似的方法。 php 7.3.8 的示例 laravel vhost conf;
<VirtualHost *:80>
ServerAdmin admin@laravel.local
DocumentRoot "D:\www\vhosts\laravel.local\public"
ServerName laravel.local
<FilesMatch "\.php$">
SetHandler application/x-httpd-php7-cgi # escape for default php version
#SetHandler application/x-httpd-phpold-cgi # unescape for php 5.2
</FilesMatch>
ErrorLog "logs/laravel.local.log"
CustomLog "logs/laravel.local.log" combined
感谢@Munim Munna 的详细回答,我想与上面的重要通知分享一个可靠的示例。
【讨论】:
【参考方案7】:除非它必须绝对是 XAMPP,否则你可以尝试使用 WAMP 获得你想要的东西。 WAMP 在不同的包中几乎是一样的。
一旦你安装好了,你可以在这里切换php版本:
您可以根据需要安装任意多个版本的 PHP。
详细说明如下。
去这里:WAMP download
然后选择您的基础服务器,例如最新的 php7。
然后,当 WAMP 3 安装完成后,转到文件夹:addons 并选择您想要的 php 版本(或多个版本)。他们从 php 5.3.29 开始提供 php 风格,应该可以与 mysql_connect 一起使用。
要安装插件,在安装过程中(双击 exe 文件)只需指向您安装 WAMP 3 的文件夹。
然后您可以使用其他文件夹的内容,例如:应用程序等来添加更多功能
一切都是接口,因此您可以专注于编码而不是破解您的环境。
【讨论】:
【参考方案8】:是的,你可以。我假设您已经安装了 xampp。所以,
关闭所有 xampp 实例。使用任务管理器停止 apache 和 mysqld。 然后将 xampp 重命名为 xampp1 或 xampp 名称后的名称。 现在下载另一个 xampp 版本。仅创建一个文件夹名称 xampp。在那里安装下载的 xampp。 现在根据您要求的 xampp 版本,只需将目标文件夹重命名为 xampp only,其他文件夹重命名为不同的名称。这就是我安装多个 xampp 的方式
【讨论】:
不确定为什么这会被否决,因为这个答案确实有效,并且正是问题所要问的。一般而言,在没有建议改进的情况下默默地投票根本不是一件聪明的事情。 @F***Schöner 谢谢。我不知道为什么我对这个答案投了反对票。 它被否决的原因是因为有人已经发布了这个答案。其次,这是一种完全不必要的做事方式,因为您再次安装所有相同的软件只是为了获得一点点不同。有可能 - 如我发布的答案所述 - 使用 1 个 XAMPP 安装,然后将其配置为使用不同版本的 PHP。【参考方案9】:您可以拥有两个不同版本的 XAMPP。
从 https://www.apachefriends.org/download.html 下载这些文件并安装到您选择的目录中,例如 C:\5.6.31\xampp 和 C:\7.1.18\xampp。 每次安装后转到安装目录(例如 C:\5.6.31\xampp、C:\7.1.18\xampp)并启动“setup_xampp.bat”,您应该会看到类似 this. 您可以在桌面上创建“xampp-control.exe”的快捷方式(右键单击“xampp-control.exe”发送到 -> 桌面)并将快捷方式重命名为 ex。 “xampp 5.6.31”和“xampp 7.1.8”。 双击“xampp-control.exe”或之前创建的快捷方式启动 XAMPP 控制面板,然后启动 Apache 和 MySQL 服务器。 要测试安装,请打开浏览器并在位置栏中键入 127.0.0.1 或 localhost。您应该会看到 XAMPP 开始屏幕。 不要打开多个 XAMPP 控制面板。 XAMPP 卸载?只需删除“xampp”目录。 但在此之前请关闭 apache 和 mysql。 就是这样。您可以打开相应的XAMPP控制面板使用不同的php版本。【讨论】:
如果真的可以通过 1 次安装完成,为什么不发布解决方案?实际上安装2个版本非常困难,这里的所有解决方案都是错误的...... @Andy 如果数据库不是那么大,双重安装是一个可行的选择。但你的回答得到了我的支持。【参考方案10】:可以通过一个 XAMPP 安装来设置多个 PHP 版本。以下说明适用于 Windows。
-
为 Windows 安装最新的 XAMPP 版本(在我的例子中是 PHP 7.1)
确保 Apache 没有从 XAMPP 控制面板运行
重命名XAMPP安装目录下的php目录,如
C:\xampp\php
变为C:\xampp\php-7.1.11
。
下载您想另外运行的 PHP 版本(例如:PHP 5.4.45)
将 php 目录从您下载的版本移动到 XAMPP 安装目录。重命名它,使其包含 PHP 版本。如C:\xampp\php-5.4.45
。
现在您需要编辑 XAMPP 和 Apache 配置:
-
在
C:\xampp\apache\conf\httpd.conf
中,找到PHP 的XAMPP 设置,您应该将其更改为:
您必须在哪里评论(使用#
)其他 PHP 版本,所以当时只有一个 Include
会被解释。
#XAMPP settings PHP 7
Include "conf/extra/httpd-xampp.conf.7.1"
#XAMPP settings PHP 5.4.45
#Include "conf/extra/httpd-xampp.conf.5.4.45"
现在在C:\xampp\apache\conf\extra
目录中将httpd-xampp.conf
重命名为httpd-xampp.conf.7.1
并为httpd-xampp.conf.5.4.45
添加一个新的配置文件。就我而言,我复制了另一个 XAMPP for php 5.5 安装的 conf 文件,因为每个版本的语法可能略有不同。
编辑 httpd-xampp.conf.5.4.45
和 httpd-xampp.conf.7.1
并将所有对 php
目录的引用替换为新的 php-X.X
版本。每个文件至少要在此处进行 10 处更改。
您现在需要为这两个版本编辑 php.ini。例如对于 php 7.1,编辑 C:\xampp\php-7.1.11\php.ini
,您将在其中将 php 目录的路径替换为 include_path
、browscap
、error_log
、extension_dir
..
就是这样。您现在可以从 XAMPP 控制面板启动 Apache。而要从一个版本切换到另一个版本,您只需编辑C:\xampp\apache\conf\httpd.conf
并在重新启动Apache 之前更改包含的PHP 版本。
【讨论】:
【参考方案11】:在命令提示符窗口 (cmd.exe) 中运行它。
set PATH=C:\xampp\php;%PATH%
根据您安装 php 7 的位置更改它。
【讨论】:
在我在 cmd 中关注Munim Munna 回答后,我只得到了 xampp 附带的 php 版本。在我在 cmd 中执行你的脚本后,php 版本发生了变化。感谢您的回答。【参考方案12】:您无需在此配置上浪费时间,只需使用 MAMP :)
MAMP在界面上有PHP版本选择功能。
【讨论】:
【参考方案13】:这可能是对该问题的技术性最低的答案,但也是最容易完成的。
如果您有两个驱动器,例如 C: 和 D:,您可以在具有不同 php 版本的两个驱动器上安装单独的 XAMPP 实例。这花了我不到 10 分钟的时间完成,而且最不容易出错。
我只是为 xampp-control.exe 创建了两个桌面快捷方式,并以它们的 php 版本命名快捷方式。我希望这可以帮助像我这样喜欢快速而肮脏的解决方案的人。
【讨论】:
【参考方案14】:按照这些简单的步骤。我目前在 PHP 7.2 上运行 XAMPP,但需要 PHP 5.6 才能处理旧项目。
第 1 步
在https://windows.php.net/download上下载PHP的线程安全版本
把文件放到你的 [Drive]:\xampp\php5.6
根据新的 php 版本重命名文件夹第 2 步
复制[驱动器]:\xampp\apache\conf\extra\httpd-xampp.conf
根据新的php版本重命名文件并放在这里:[Drive]:\xampp\apache\conf\extra\httpd-xampp5.6.conf
第 3 步
编辑新创建的“httpd-xampp5.6.conf”
基本上,您需要更改所有 PHP 源代码和 .dll
之前
LoadFile "C:/xampp/php/php7ts.dll"
LoadFile "C:/xampp/php/libpq.dll"
LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"
之后
LoadFile "C:/xampp/php5.6/php5ts.dll"
LoadFile "C:/xampp/php5.6/libpq.dll"
LoadModule php5_module "C:/xampp/php5.6/php5apache2_4.dll"
这是我的文件:https://gist.github.com/mpalencia/f8a20c31bffb02fe20d371218c23d1ec
第 4 步
编辑文件[驱动器]:\xampp\apache\conf\httpd.conf
之前
# XAMPP settings
Include "conf/extra/httpd-xampp.conf"
之后
# XAMPP settings
Include "conf/extra/httpd-xampp5.6.conf"
您可以在切换到不同版本时编辑此行
第 5 步
编辑您的 PHP 5.6 配置 - php.ini
添加你的扩展目录: extension_dir = "C:\xampp\php5.6\ext"
第 6 步
启动 Apache
第 7 步
在 Windows 上编辑 PHP 环境变量路径
【讨论】:
【参考方案15】:我在安装 magento2 时遇到了同样的问题,虽然它需要 ~7.3.0,但我有 7.4.1。所以,我用这种方法降级了php版本。
第 1 步:从这里下载 Php 版本 nts 版本 https://windows.php.net/downloads/releases/archives/ 并将这个版本粘贴到 c:\xampp\ 命名为 'php71'
第 2 步:设置虚拟主机环境并进行一些其他更改。 转到“c:\xampp/\pache\conf\extra\httpd-vhosts.conf”并将代码sn-p放在行尾
<VirtualHost 127.0.0.1:80>
DocumentRoot "C:/xampp/htdocs/magento/crashcourse/"
ServerName magento2.test
<Directory "C:/xampp/htdocs/magento/crashcourse/">
Require all granted
</Directory>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php71-cgi
</FilesMatch>
</VirtualHost>
转到“C:\Windows\System32\drivers\etc\hosts”,然后使用管理员权限编辑文件,然后在行尾添加代码。
127.0.0.1 magento2.test
转到您的 Apache 配置文件“c:/xampp/apache/conf/extra/httpd-xampp.conf”并在行尾粘贴以下代码
ScriptAlias /php71 "C:/xampp/php71"
Action application/x-httpd-php71-cgi /php71/php-cgi.exe
<Directory "C:/xampp/php71">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
SetEnv PHPRC "C:/xampp/php71"
</Directory>
现在,一切就绪。 转到网址:http://magento2.test 一切正常!
【讨论】:
【参考方案16】:我只想分享我的新发现:https://laragon.org/docs/index.html
我刚用了 1 个小时,看起来很有希望。
您可以添加和切换 PHP 版本, 它具有 Wordpress、laravel 等的一键式安装程序 它使用每个应用程序的名称(例如 appname.test)自动创建虚拟主机 您可以选择您当前的 htdocs 文件夹作为根 www 文件夹 您只需添加其他 PHP 版本,将它们提取到文件夹中并从列表中选择它们 每次更改后它都会自动重新加载 apache 添加 phpMyAdmin 就像下载它并将其放入 LARAGON_DIR\etc\apps\phpMyAdmin 等一样简单...Laragon DOCS
How to add another PHP version to Laragon
How to add phpMyAdmin to Laragon
我与 Laragon 没有任何关系。刚刚在 Google 上找到它正在寻找“XAMPP Windows 替代品”
【讨论】:
【参考方案17】:我需要做同样的事情,所以我用谷歌搜索了如何实现堆栈溢出,OP 遇到了同样的问题......所以我的发现......我尝试从所有不同的方向重命名文件,我的结论基本上是我花了太长时间了。太棒了,我最终只是从这里安装了第 7 版:
https://www.apachefriends.org/index.html (在尝试之前终止服务并退出 xampp)
当被问到将目录名称放在哪里时(给它一个不同的名称):
和
DONEZO!现在只需确保在来回交换之前终止服务并退出,您就有 2 个无菌的 XAMPP 环境可供使用..
万岁!现在我可以开始工作了!
【讨论】:
我认为上面的 2 个答案已经建议了,Maulik Gangani 和 og1842。【参考方案18】:使用这个php switcher
您可以通过虚拟主机配置控制您想要的任何项目的 php 版本。
【讨论】:
【参考方案19】:我知道这是旧帖子,但我想分享在 PHP 7 中仍在运行 mysql_connect() 的库。 它通过覆盖真正的函数来工作(mysql_connect() 被在这个库上工作的 mysqli_connect() 覆盖)。
我从这个视频中找到https://www.youtube.com/watch?v=Eqd-jJu4sQ4
希望对你有帮助
【讨论】:
【参考方案20】:可以在 .htaccess 文件中指定 PHP 的版本。这意味着虽然大多数项目可以在 httpd.conf 文件中保留默认的全局配置,但可以通过编辑 .htaccess 将特定项目设置为不同的版本。
使用.htaccess的好处是不同的PHP版本可以用于不同的项目,而不需要不断的修改httpd.conf来指定不同的项目目录需要哪些PHP。相反,可以直接在项目本身内进行更改,只需编辑其 .htaccess 文件即可。
所需的确切行将根据您的设置而有所不同。对我来说,使用 Fast CGI,我只需在我想要使用 PHP 8 的项目的 .htaccess 文件中添加以下行(PHP 7 是我服务器上的默认设置)。
FcgidWrapper "C:/xampp/php-8.0.6-nts-Win32-vs16-x64/php-cgi.exe -c C:/xampp/php-8.0.6-nts-Win32-vs16-x64" .php
字符串的第一部分引用 PHP 可执行文件,而 -c
选项用于所需 php.ini 文件的目录路径。如果省略,将使用全局配置的 php.ini。
【讨论】:
【参考方案21】:可能有点晚了,但我正在使用批处理来重命名 PHP 文件夹(我几年前发现的 phpswitch 的略微修改版本)。
您将不同的文件夹复制到您的 XAMPP 安装中。每个 PHP 文件夹(活动文件夹除外)都接收版本号作为后缀(例如 php_5.6.32)。在 ALL PHP 文件夹中,创建了一个文件 (PHP_VERSION),其中仅包含相应的版本号,因此脚本可以获取此信息。但这一切都在自述文件中描述。
从 PHP7 开始,httpd-xampp.conf 加载 php7ts.dll 而不是 php5ts.dll。所以我不得不按照同样的方法扩展脚本(PHPSwitch.php)来重命名这些配置文件。
$renameCur = new PHPSwitch_Rename($currInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName'] . '_' . $currInst['version']);
$renameNew = new PHPSwitch_Rename($newInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName']);
$apache_curent = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp.conf";
$apache_curent_rename = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp_".$currInst['version'].".conf";
$apache_new = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp_".$newInst['version'].".conf";
$apache_new_rename = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp.conf";
$renameCur_apache_conf = new PHPSwitch_Rename($apache_curent, $apache_curent_rename);
$renameNew_apache_conf = new PHPSwitch_Rename($apache_new, $apache_new_rename);
$transaction = new PHPSwitch_Rename_Transaction();
$transaction->add($renameCur);
$transaction->add($renameNew);
$transaction->add($renameCur_apache_conf);
$transaction->add($renameNew_apache_conf);
【讨论】:
以上是关于有没有办法在 XAMPP 中使用两个 PHP 版本?的主要内容,如果未能解决你的问题,请参考以下文章