我们使用PHP 7.0运行XAMPP,因为我们的新产品需要PHP 7。
但也有一些旧的项目使用mysql_connect等函数。这些在PHP 7.0中被删除。
那么,是否有一种方法可以轻松地在XAMPP中更改PHP版本?
注意:请不要建议将旧项目升级到与新版本兼容,因为我无法做到这一点 这些决定是我作为开发人员(只是一名员工)无法得到的。
我们使用PHP 7.0运行XAMPP,因为我们的新产品需要PHP 7。
但也有一些旧的项目使用mysql_connect等函数。这些在PHP 7.0中被删除。
那么,是否有一种方法可以轻松地在XAMPP中更改PHP版本?
注意:请不要建议将旧项目升级到与新版本兼容,因为我无法做到这一点 这些决定是我作为开发人员(只是一名员工)无法得到的。
当前回答
我需要做同样的事情,所以我谷歌了一下,结果发现堆栈溢出,而OP也有同样的问题……所以我的发现…我尝试从不同的方向重命名文件,我的结论基本上是它花了我太长时间。所以我最终只是从这里安装了第7版:
https://www.apachefriends.org/index.html (在尝试xampp之前杀死服务并退出)
当被问到在哪里放置目录名称时,就像这样(给它一个不同的名字):
and
DONEZO !现在只要确保在来回交换之前杀死服务并退出,你就有2个无菌的XAMPP环境可以玩。
万岁!现在我真的可以去工作了!
其他回答
我推荐使用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/获取开发环境配置。
安装一个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版本,所以只有一个包含将被解释在同一时间。
#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"
Now in C:\xampp\apache\conf\extra directory rename httpd-xampp.conf to httpd-xampp.conf.7.1 and add a new configuration file for httpd-xampp.conf.5.4.45. In my case, I copied the conf file of another installation of XAMPP for php 5.5 as the syntax may be slightly different for each version. Edit httpd-xampp.conf.5.4.45 and httpd-xampp.conf.7.1 and replace there all the reference to the php directory with the new php-X.X version. There are at least 10 changes to be made here for each file. You now need to edit php.ini for the two versions. For example for php 7.1, edit C:\xampp\php-7.1.11\php.ini where you will replace the path of the php directory for include_path, browscap, error_log, extension_dir..
就是这样。您现在可以从XAMPP控制面板启动Apache。要从一个版本切换到另一个版本,你只需要在重新启动apache之前编辑C:\xampp\apache\conf\httpd.conf并更改包含的PHP版本。
我最近也遇到了同样的情况,我用以下步骤解决了它:
第一步:从php.net下载nts(非线程安全)版本的PHP压缩文件。然后将其解压到xampp文件夹中,与默认的php文件夹相同。xampp文件夹现在看起来是这样的:
步骤2:
打开下载的php文件夹。复制文件php.ini-development到php.ini,并用任何编辑器(notepad, notepadd++…)打开它。按下Ctrl+F组合键并找到text: extension_dir = "ext",然后删除该行开头的分号来取消该行的注释。
执行同样的操作取消注释以下几行:extension=curl extension=ftp extension=fileinfo extension=mysqli extension=openssl extension=pdo_mysql
步骤3:
进入xampp文件夹,打开httpd-xampp.conf文件,路径为{disk_name}/xampp/apache/conf/extra/httpd-xampp.conf(将{磁盘名称}替换为安装xampp的驱动器磁盘)。 例如,我将xampp安装在D盘,这是打开文件的路径 httpd-xampp.conf现在是D:\xampp\apache\conf\extra\httpd-xampp.conf。 或者更简单地说,打开xampp控制面板,单击apache的配置按钮,然后单击apache (httpd-xampp.conf)。
接下来,在httpd-xampp.conf文件的末尾添加以下代码,然后将/php8_1和D:/xampp/php8_1/更改为php文件夹的名称和路径。
ScriptAlias /php8_1/ "D:/xampp/php8_1/"
Action application/x-httpd-php8_1-cgi "/php8_1/php-cgi.exe"
<Directory "D:/xampp/php8_1">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files> SetEnv PHPRC "D:/xampp/php8_1"
</Directory>
例如:如果你的php文件夹名称是php6_5,文件夹路径是C:/xampp/php6_5/,那么代码将是:
ScriptAlias /php6_5 "C:/xampp/php6_5/"
Action application/x-httpd-php6_5-cgi "/php6_5/php-cgi.exe"
<Directory "C:/xampp/php6_5">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
SetEnv PHPRC "C:/xampp/php6_5/"
</Directory>
注意:如果您愿意,可以在步骤1到3之后向XAMPP安装中添加更多版本的PHP。
步骤4:添加目录以运行特定的PHP版本
只需在配置文件(步骤3中的httpd-xamp .conf)底部添加以下内容来设置目录。
<Directory "C:\xampp\htdocs\my_project1">
<FilesMatch "\.php$">
SetHandler application/x-httpd-php5_6-cgi //replace php5_6 with your version php
</FilesMatch>
</Directory>
<Directory "C:\xampp\htdocs\my_project2">
<FilesMatch "\.php$">
SetHandler application/x-httpd-php8_1-cgi //replace php8_1with your version php
</FilesMatch>
</Directory>
你可以在下面的图片中看到说明
步骤5:保存并重新启动XAMPP
保存并关闭配置文件。从xampp控制面板重新启动apache。如果要检查配置是否成功,可以创建index.php文件和<?PHP echo phpinfo()检查PHP版本。
现在,我将展示我的结果
当您可以通过一个xampp安装同时使用多个PHP版本时,为什么要在PHP版本之间切换呢?
安装一个xampp,你有两个选择:
Run an older PHP version for only the directory of your old project: This will serve the purpose most of the time. You may have one or two old projects that you intend to run with an older PHP version. Just configure xampp to run an older PHP version for only those project directories. Run an older PHP version on a separate port of xampp: Sometimes you may be upgrading an old project to the latest PHP version and at the same time you need to run the same project back and forth between the new PHP version and the old PHP version. To do this you can set an older PHP version on a different port (say 8056) so when you go to http://localhost/any_project/, xampp runs PHP 7 and when you go to http://localhost:8056/any_project/ xampp runs PHP 5.6. Run an older PHP version on a virtualhost: You can create a virtualhost like localhost56 to run PHP 5.6 while you can use PHP 7 on localhost.
我们来设置一下
步骤1:下载PHP
假设你在xampp下运行PHP 7,你想要添加一个较旧的PHP版本(比如PHP 5.6)。从php.net下载nts(非线程安全)版本的PHP压缩压缩包(参见旧版本的压缩包),并在c:\xampp\php56下解压文件。线程安全版本不包括php-cgi.exe。
步骤2:配置php.ini
在记事本中打开文件c:\xampp\php56\php.ini。如果文件不存在,将php.ini-development复制到php.ini并在记事本中打开。然后取消下面这一行的注释:
extension_dir = "ext"
同样,如果Apache配置httpd-xamp .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之后向xampp安装中添加更多版本的PHP。
步骤4(选项1):[添加目录以运行特定的PHP版本]
现在可以设置将在PHP 5.6中运行的目录。只需在配置文件(步骤3中的httpd-xamp .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-xamp .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添加到您的hosts文件中(参见如何添加), 然后将以下代码添加到配置文件(步骤3中的httpd-xamp .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>
Finish:保存并重启Apache
保存并关闭配置文件。从xampp控制面板重新启动apache。如果您选择选项2,您可以在xampp控制面板中看到附加端口(8056)。
我只是想分享我的新发现:https://laragon.org/docs/index.html
我刚用了一个小时,看起来很不错。
你可以添加和切换PHP版本, 它有一键安装Wordpress, laravel等 它自动创建vhosts与每个应用程序的名称(例如。appname.test) 你可以选择你当前的htdocs文件夹作为WWW根文件夹 您只需添加其他PHP版本,将它们提取到文件夹中,并从列表中选择它们 它会在每次更改后自动重载apache 添加phpMyAdmin就像下载它一样简单,并把它放在{LARAGON_DIR}\etc\apps\phpMyAdmin等…
拉拉贡文档
如何添加另一个PHP版本的Laragon
如何添加phpMyAdmin到Laragon
我和拉拉贡没有任何关系。刚刚在谷歌上找到它,寻找“XAMPP Windows替代品”