我们使用PHP 7.0运行XAMPP,因为我们的新产品需要PHP 7。
但有些老项目使用mysql_connect等函数。这些在PHP 7.0中被删除。
mysql_connect
那么,是否有一种方法可以轻松地在XAMPP中更改PHP版本?
请注意:请不要建议将旧项目升级到与新版本兼容,因为我不适合这样做 我不能作为一个开发人员(只是一个员工)得到的决定
如果你不想这样做,我建议你使用wamp并像在这里那样更改版本。
你可以下载你需要的任何版本的PHP,并把它们放在自己的目录中。
c:\php5\
c:\php7\
你所需要做的就是告诉你的web服务器(Apache)要使用哪个版本的PHP,这是通过加载适当的模块来完成的。在Apache中,你可以通过找到文件httpd.conf,然后编辑相应的行来做到这一点:
httpd.conf
LoadModule php7_module c:\php7\libphp7.so
当然,你必须找出正确的路径——这只是为了说明。
保存httpd.conf并重新启动服务器。注意,如果您不重新启动它,更改将不会生效。
没有GUI开关能够做到这一点,你需要编辑.conf文件,然后重新启动Apache。这样做只需要几秒钟,你甚至可以注释掉一个版本,这样“切换”只需要几次按键,例如。
.conf
使用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年1 - 11月-:显然有人说Windows上没有.so文件。我给出的答案改编自我在Mac上设置的东西(它使用.so文件而不是.dll)。然而,答案的原理仍然是完全正确的。你正在使用Apache的配置文件httpd.conf来指定位于你系统上的PHP模块(.so或.dll)的在哪里。所以Windows的唯一区别是文件名和/或路径位置。我给出的答案也适用于Apache/PHP的普通安装(完全没有XAMPP)。
.so
.dll
您可以有两个不同版本的XAMPP。
我推荐使用Docker,它允许你将环境分成不同的组件,并在任何时候混合和匹配你想要的组件。
Docker将允许您运行一个容器与MySQL,另一个与PHP。因为它们是独立的映像,所以你可以有两个容器,一个是PHP 5,另一个是PHP 7,你可以任意启动一个,端口80可以映射到两个容器。
https://hub.docker.com有广泛的预配置映像,您可以安装和运行没有太多的麻烦。
我还添加了集装箱岸吊作为映像,它允许你从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/。
你不需要在这个配置上浪费时间,只需使用MAMP:)
MAMP在界面上有PHP版本选择功能。
是的,你可以。我假设您已经安装了xampp。所以,
这就是我如何使用多个xampp安装
一旦你安装了它,你可以在这里切换php版本:
您可以根据需要安装任意版本的PHP。
下面是具体的操作步骤。
只要去这里:里面下载
然后选择你的基础服务器,例如最新的php7。
然后,当WAMP 3安装后,进入文件夹:插件并选择你想要的php版本。他们提供了从php 5.3.29开始的php版本,它应该与mysql_connect一起工作。
要安装插件,在安装过程中(双击exe文件)只需指向安装WAMP 3的文件夹。
然后你可以使用其他文件夹的内容,如:应用程序等来添加更多的功能
所有东西都是接口的,所以您可以专注于编码,而不是破坏您的环境。
安装一个XAMPP就可以安装多个版本的PHP。下面的说明适用于Windows。
C:\xampp\php
C:\xampp\php-7.1.11
C:\xampp\php-5.4.45
现在你需要编辑XAMPP和Apache配置:
C:\xampp\apache\conf\httpd.conf
你必须注释(用#)其他的PHP版本,所以一次只有一个Include会被解释。
#
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添加一个新的配置文件。在我的例子中,我复制了用于php 5.5的另一个XAMPP安装的conf文件,因为每个版本的语法可能略有不同。
C:\xampp\apache\conf\extra
httpd-xampp.conf
httpd-xampp.conf.7.1
httpd-xampp.conf.5.4.45
编辑httpd-xampp.conf.5.4.45和httpd-xampp.conf.7.1,并用新的php-X.X版本替换对php目录的所有引用。这里每个文件至少要做10个更改。
php-X.X
php
现在需要为这两个版本编辑php.ini。例如,在php 7.1中,编辑C:\xampp\php-7.1.11\php.ini,你将在其中替换php目录的路径include_path, browscap, error_log, extension_dir..
C:\xampp\php-7.1.11\php.ini
include_path
browscap
error_log
extension_dir
就是这样。您现在可以从XAMPP控制面板启动Apache。要从一个版本切换到另一个版本,你只需要在重新启动Apache之前编辑C:\xampp\apache\conf\httpd.conf并更改包含的PHP版本。
也许有点晚了,但我正在使用批处理重命名PHP文件夹(几年前我发现的phpswitch的稍微修改版本)。
将不同的文件夹复制到XAMPP安装中。每个PHP文件夹(活动文件夹除外)接收版本号作为后缀(例如。php_5.6.32)。在所有 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);
我使用unisserver。
它内置了这个功能。
http://www.uniformserver.com/
就是这么简单。
统一服务器是一个免费的轻量级WAMP服务器解决方案。小于24MB,模块化设计,包括最新版本的Apache2, Perl5, PHP(在PHP53, PHP54, PHP55或PHP56之间切换),MySQL5或MariaDB5, phpMyAdmin或Adminer4。不需要安装!没有注册尘埃!打开行李,发动吧!
它甚至可以用u盘运行。有cron仿真,支持perl, mariaDB,几个版本的Mysql, filezilla服务器和其他一些东西。
我需要做同样的事情,所以我谷歌了一下,结果发现堆栈溢出,而OP也有同样的问题……所以我的发现…我尝试从不同的方向重命名文件,我的结论基本上是它花了我太长时间。所以我最终只是从这里安装了第7版:
https://www.apachefriends.org/index.html (在尝试之前终止xampp服务并退出xampp
当被问到在哪里放置目录名称时,就像这样(给它一个不同的名字):
而且
DONEZO !现在只要确保在来回交换之前杀死服务并退出,你就有2个无菌的XAMPP环境可以玩。
万岁!现在我真的可以去工作了!
安装一个xampp,你有两个选择:
http://localhost/any_project/
http://localhost:8056/any_project/
下载PHP
假设你在xampp下运行PHP 7,你想要添加一个较旧的PHP版本(比如PHP 5.6)。从php.net下载nts(非线程安全)版本的PHP压缩文件(旧版本请参阅存档),并在c:\xampp\php56下解压缩文件。线程安全版本不包括php-cgi.exe。
c:\xampp\php56
步骤2:配置php.ini
php.ini
在记事本中打开文件c:\xampp\php56\php.ini。如果文件不存在,将php.ini-development复制到php.ini并在记事本中打开它。然后取消下面这一行的注释:
c:\xampp\php56\php.ini
php.ini-development
extension_dir = "ext"
同样,如果Apache config httpd-xampp.conf中存在以下行
SetEnv PHPRC "\\path\\to\\xampp\\php"
用开头的#(散列字符)注释掉它。
步骤3:配置apache
打开xampp控制面板,单击apache的config按钮,然后单击Apache (httpd-xampp.conf)。将打开一个文本文件。将以下设置放在文件底部:
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-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版本]
<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)。
在命令提示符窗口(cmd.exe)中运行此命令。
set PATH=C:\xampp\php;%PATH%
根据安装PHP 7的位置进行更改。
遵循这些简单的步骤。我目前在PHP 7.2上运行XAMPP,但需要PHP 5.6来处理旧项目。
步骤1
在https://windows.php.net/download上下载线程安全版本的PHP
把文件放在[驱动器]:\xampp\php5.6
步骤2
复制(驱动):\ xampp \ apache \ conf \额外\ 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
编辑文件[Drive]:\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环境变量路径
这可能是这个问题最不具技术性的答案,但也是最容易实现的。
如果你有两个驱动器,比如C:和D:,你可以在两个驱动器上安装一个单独的XAMPP实例,使用不同的php版本。这花了我不到10分钟的时间,是最不容易出错的。
我只是为xampp-control.exe创建了两个桌面快捷方式,并以它们的php版本命名快捷方式。我希望这能帮助像我这样喜欢快速而肮脏的解决方案的人。
我正在做一个10年前的项目。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-xamp .conf(或httpd.conf)的底部;
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>
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>
一些有用的提示:
<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的详细回答,我想分享一个坚实的样本和上面的重要通知。
使用php切换器
你可以通过vhost配置控制php版本到任何你想要的项目。
我从这个视频中找到https://www.youtube.com/watch?v=Eqd-jJu4sQ4
希望能有所帮助
我确实在安装magento2时遇到了同样的问题,而它需要~7.3.0,但我有7.4.1。我用这个方法降低了php的版本。
步骤2:设置虚拟主机环境并做一些其他更改。 打开“c:\xampp/\pache\conf\extra\httpd-vhosts.conf”;并将代码片段放在行
<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>
现在,都设置好了。 去url: http://magento2.test所有工作正常!< / p >
我只是想分享我的新发现:https://laragon.org/docs/index.html
我刚用了一个小时,看起来很不错。
Laragon DOCS
如何添加另一个PHP版本的Laragon
如何将phpMyAdmin添加到Laragon
我和拉拉贡没有任何关系。刚在谷歌上找到的,正在搜索“XAMPP Windows替代品”。
PHP的版本可以在.htaccess文件中指定。这意味着大多数项目可以在httpd.conf文件中保留默认的全局配置,特定的项目可以通过编辑.htaccess设置为不同的版本。
使用.htaccess的优点是不同的PHP版本可以用于不同的项目,而不需要不断修改httpd.conf来指定不同的项目目录需要哪个PHP。相反,只需编辑项目的.htaccess文件,就可以直接在项目内部进行更改。
所需的确切线条取决于您的设置。对于我来说,使用快速CGI,我只是在那些我想使用PHP 8 (PHP 7是我的服务器上的默认)的项目的.htaccess文件中添加以下一行。
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。
-c
简单和最容易的步骤
我最近也遇到了同样的情况,我用以下步骤解决了它:
步骤1:从php.net下载nts(非线程安全)版本的PHP压缩档案。然后将其解压到xampp文件夹中,与默认的php文件夹相同。xampp文件夹现在看起来是这样的:
步骤2:
Ctrl+F
extension=curl
extension=ftp
extension=fileinfo
extension=mysqli
extension=openssl
extension=pdo_mysql
步骤3:
xampp
{disk_name}/xampp/apache/conf/extra/httpd-xampp.conf
{disk name}
D:\xampp\apache\conf\extra\httpd-xampp.conf
/php8_1
D:/xampp/php8_1/
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>
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>
XAMPP
添加目录来运行特定的PHP版本
<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>
保存并重新启动XAMPP
index.php
<?php echo phpinfo()
现在,我将展示我的结果
我是否建议使用Xampp PHP切换器通过JackieDo。 在非常简单的安装之后,你可以使用命令xphp switch [VERSION]来更改php版本
xphp switch [VERSION]