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

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

那么,是否有一种方法可以轻松地在XAMPP中更改PHP版本?

注意:请不要建议将旧项目升级到与新版本兼容,因为我无法做到这一点 这些决定是我作为开发人员(只是一名员工)无法得到的。


当前回答

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。

其他回答

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

现在,我将展示我的结果

这可能是这个问题最不具技术性的答案,但也是最容易实现的。

如果你有两个驱动器,比如C:和D:,你可以在两个不同的php版本的驱动器上安装XAMPP的单独实例。这花了我不到10分钟的时间,是最不容易出错的。

我只是为xampp-control.exe创建了两个桌面快捷方式,并以它们的php版本命名快捷方式。我希望这能帮助像我这样喜欢快速而肮脏的解决方案的人。

您可以有两个不同版本的XAMPP。

Download those files from https://www.apachefriends.org/download.html and install into a directory of your choice, for example in C:\5.6.31\xampp and C:\7.1.18\xampp. After every installation go to installed directory (ex. C:\5.6.31\xampp, C:\7.1.18\xampp) and start the "setup_xampp.bat" and you should see something like this. You can make shortcuts of "xampp-control.exe" on your desktop (right click on "xampp-control.exe" Send to -> Desktop) and rename shortcuts for ex. "xampp 5.6.31" and "xampp 7.1.8". Start XAMPP control panel with double-click on "xampp-control.exe" or previously created shortcut and start Apache and MySQL servers. To test installiation open your browser and type 127.0.0.1 or localhost in the location bar. You should see XAMPP start screen. Do not open more then one XAMPP control panel. XAMPP uninstall? Simply remove the "xampp" Directory. But before please shutdown the apache and mysql. That's all. You can use different php versions opening corresponding XAMPP control panel.

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。