我们使用PHP 7.0运行XAMPP,因为我们的新产品需要PHP 7。

但也有一些旧的项目使用mysql_connect等函数。这些在PHP 7.0中被删除。

那么,是否有一种方法可以轻松地在XAMPP中更改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)的底部;

***重要注意:你不应该使用脚本别名作为你的目标文件夹名称, 它们必须是不同的。(例如/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

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>

一些有用的提示:

如果你有php5的问题。X,同时使用编写器切换终端到7.3.8 如果你想让php 7.3.8成为windows上默认的命令行php解释器,只需将php的windows环境路径更改为7.3.8文件夹路径。 不要忘记在每个版本文件夹中编辑你需要的相关php.ini confs。

作为最后的额外提示,如果您需要设置虚拟主机的任何版本,您可以使用类似的方法。 laravel vhost conf for php 7.3.8

<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的详细回答,我想分享一个坚实的样本和上面的重要通知。

其他回答

你可以像我一样下载并安装两个不同的xampps:(第一个是php7,第二个是php5)

如果你不想这样做,我建议你使用wamp并像这里显示的那样更改版本。

你可以下载你需要的任何版本的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。

Edit 1-Nov-2017: Apparently some people are saying there's no .so files on Windows. The answer I gave was adapted from how I have things set up on my Mac (which does use .so files instead of .dll). The principle of the answer however is still exactly correct. You are using Apache's configuration file, httpd.conf to specify where the PHP module (.so or .dll) is located on your system. So the only difference for Windows would be the file name and/or path location. The answer I've given is also correct for a vanilla installation of Apache/PHP (without XAMPP at all).

遵循这些简单的步骤。我目前在PHP 7.2上运行XAMPP,但需要PHP 5.6来处理旧项目。

步骤1

在https://windows.php.net/download上下载线程安全版本的PHP

把文件放在[驱动器]:\xampp\php5.6

根据新的php版本重命名文件夹

步骤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环境变量路径

我建议使用Xampp PHP切换器由JackieDo。 在非常简单的安装之后,你可以使用命令xphp switch [VERSION]来更改php版本。

我使用unisserver。

它内置了这个功能。

http://www.uniformserver.com/

就是这么简单。

统一服务器是一个免费的轻量级WAMP服务器解决方案。小于24MB,模块化设计,包括最新版本的Apache2, Perl5, PHP(在PHP53, PHP54, PHP55或PHP56之间切换),MySQL5或MariaDB5, phpMyAdmin或Adminer4。不需要安装!没有注册尘埃!打开行李,发动吧!

它甚至可以用u盘运行。有cron仿真,支持perl, mariaDB,几个版本的Mysql, filezilla服务器和其他一些东西。