我们正在使用PHP 7.0运行XAMPP,因为我们的新产品需要PHP 7.
但是有一些旧项目使用类似函数等mysql_connect.这些在PHP 7.0中被删除.
那么有没有办法在XAMPP中轻松更改PHP版本.
注意:请不要建议将旧项目升级到与新版本兼容,因为我无法做到这一点,因为我无法作为开发人员(只是一名员工)做出这些决定.
And*_*ndy 85
您可以下载所需的任何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
Run Code Online (Sandbox Code Playgroud)
使用PHP 7:
#LoadModule php5_module c:\php5\libphp5.so
LoadModule php7_module c:\php7\libphp7.so
Run Code Online (Sandbox Code Playgroud)
您不需要多个版本的XAMPP,或双启动,或使用不同的计算机,或任何其他建议复杂的解决方案的"解决方案".OP希望使用XAMPP并告诉它使用哪个版本的PHP.这是最快捷,最有效的方法,只需要安装一个XAMPP.
编辑2017年11月1日:显然有些人说.soWindows 上没有文件.我给出的答案改编自我在Mac上设置的东西(它确实使用.so文件而不是.dll).然而,答案的原则仍然完全正确.您正在使用Apache的配置文件,httpd.conf指定其中的PHP模块(.so或.dll)位于您的系统上.因此Windows的唯一区别是文件名和/或路径位置.我给出的答案对于Apache/PHP的vanilla安装也是正确的(根本没有XAMPP).
Mun*_*nna 83
为什么在单个xampp安装的同时可以同时使用多个 PHP版本时在PHP版本之间切换?使用单个xampp安装,您有2个选项:
仅为旧项目的目录运行较旧的PHP版本: 这将在大多数情况下用于此目的,您可能有一个或两个旧项目,您打算使用较旧的PHP版本运行.只需配置xampp即可为这些项目目录运行较旧的PHP版本.
在xampp的单独端口上运行较旧的PHP版本:有时,当您需要在新旧PHP版本上来回运行相同项目时,您可能正在将旧项目升级到最新的PHP版本.然后你可以在不同的端口上设置一个较旧的PHP版本(例如8056),所以当你去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
所以你在xampp下运行PHP 7,你想要添加一个旧的PHP版本,比如PHP 5.6.从php.net下载PHP zip存档的nts(Non Thread Safe)版本(参见旧版本的存档)并解压缩下的文件c:\xampp\php56.线程安全版本不包括php-cgi.exe.
第2步:配置php.ini
c:\xampp\php56\php.ini在记事本中打开文件.如果文件不存在则复制php.ini-development到php.ini并在记事本中打开它.然后取消注释以下行:
extension_dir = "ext"
Run Code Online (Sandbox Code Playgroud)
第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>
Run Code Online (Sandbox Code Playgroud)
注意: 如果需要,可以在步骤1到3之后为xampp安装添加更多版本的PHP.
步骤4(选项1): [添加目录以运行特定的PHP版本]
现在,您可以设置将在PHP 5.6中运行的目录.只需在配置文件的底部添加以下内容即可设置目录.
<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>
Run Code Online (Sandbox Code Playgroud)
第4步(选项2): [在单独的端口上运行较旧的PHP版本]
现在要将PHP v5.6设置为端口8056,将以下代码添加到配置文件的底部.
Listen 8056
<VirtualHost *:8056>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
第4步(选项3): [在虚拟主机上运行较旧的PHP版本]
要在目录(htdocs56)上创建虚拟主机(localhost56)以在http:// localhost56上使用PHP v5.6 ,在所需位置创建目录htdocs56并将localhost56添加到主机文件(请参阅如何),然后添加以下代码到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>
Run Code Online (Sandbox Code Playgroud)
完成:保存并重新启动Apache
保存并关闭配置文件,从xampp控制面板重启apache.如果您选择了选项2,则可以看到xampp控制面板中列出的其他端口(8056).
更新错误:
来自脚本'php-cgi.exe'的格式错误的标头:错误的标头
如果遇到上述错误,请httpd-xampp.conf再次打开并使用前导#(哈希字符)注释掉以下行.
SetEnv PHPRC "\\path\\to\\xampp\\php"
Run Code Online (Sandbox Code Playgroud)
Mau*_*ani 30
你可以像我一样下载并安装两个不同的xampps :(首先是php7,第二个是php5)

如果您不想这样做,我建议您使用wamp并更改此处显示的版本.
Nig*_*Ren 12
我建议使用Docker,这允许您将环境分成各种组件,并随时混合和匹配您想要的组件.
Docker将允许您使用MySQL运行一个容器,使用PHP运行另一个容器.因为它们是单独的图像,所以你可以有两个容器,一个PHP 5另一个PHP 7,你可以启动你想要的任何一个,端口80可以映射到两个容器.
https://hub.docker.com提供了大量预先配置的图像,您可以轻松安装和运行这些图像.
我还添加了portainer作为图像,它允许您管理docker设置的各个方面 - 从docker镜像(我在启动时启动此容器以节省我必须使用命令行).它并不能为您做任何事情,有时第一次从命令行配置和启动图像更容易,但是一旦设置完成,您就可以通过Web界面启动和停止它们.
也可以同时运行两个容器并将各个端口映射到每个容器.因此端口80可以映射到PHP 5和81到PHP 81(如果你在2017年观看这个,则可以映射到PHP 7).
有关如何安装Docker(https://docs.docker.com/engine/installation/)和其他"如何"输入内容的各种教程.请尝试http://www.masterzendframework.com/docker-development-environment/以获取开发环境配置.
我正在工作一个十年前的项目。所以 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/
2 - 依次解压到 c:\xampp\php738 和 c:\xampp\php52 文件夹
3 - 将这些行添加到 httpd-xampp.conf(或 httpd.conf)的底部;
*** 重要提示:您不应使用脚本别名作为目标文件夹名称,它们必须不同。(例如 /php7x 可以,/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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
一些有用的注意事项:
作为最后一个额外说明,如果您需要使用任何版本设置虚拟主机,您可以使用类似的方法。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
Run Code Online (Sandbox Code Playgroud)
感谢@Munim Munna 的详细回答,我想与上面的重要通知分享一个可靠的样本。
小智 6
您可以拥有两个不同版本的XAMPP.
在命令提示符窗口 (cmd.exe) 中运行它。
set PATH=C:\xampp\php;%PATH%
Run Code Online (Sandbox Code Playgroud)
根据您安装 php 7 的位置进行更改。
小智 6
我最近也遇到了同样的情况,我通过以下步骤解决了:
步骤 1 :从php.net下载 nts(非线程安全)版本的 PHP zip 存档。然后将其解压到 xampp 文件夹中,与默认 php 文件夹处于同一级别。xampp 文件夹现在看起来像这样:
第2步:
php文件夹。将文件复制php.ini-development到php.ini并使用任何编辑器(记事本、notepadd++...)打开它。按Ctrl+F组合键并查找文本:extension_dir = "ext"然后通过删除行开头的分号来取消注释该行。extension=curl extension=ftp extension=fileinfo extension=mysqli extension=openssl extension=pdo_mysql步骤3:
xampp打开文件(替换为安装 xampp 的驱动器磁盘)。httpd-xampp.conf{disk_name}/xampp/apache/conf/extra/httpd-xampp.conf{disk name}httpd-xampp.conf现在打开该文件的路径将是D:\xampp\apache\conf\extra\httpd-xampp.conf.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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
XAMPP:如果需要,您可以按照步骤 1 到 3 将更多版本的 PHP 添加到安装中。步骤 4:添加运行特定 PHP 版本的目录
httpd-xampp.conf来自步骤 3)即可设置目录。<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>
Run Code Online (Sandbox Code Playgroud)
第5步:保存并重启XAMPP
index.php文件并<?php echo phpinfo()检查php版本。现在,我将展示我的结果
是的你可以。我假设您已经安装了 xampp。所以,
这就是我安装多个 xampp 的方式
除非必须绝对是XAMPP,否则您可以尝试使用WAMP获得想要的东西。WAMP在不同的包装中几乎是同一件事。
安装完成后,您可以在以下php版本之间进行切换:
您可以根据需要安装任意数量的PHP版本。
详细说明如下。
只需转到此处:WAMP下载
然后选择您的基本服务器,例如最新的php7。
然后,在安装WAMP 3后,转到文件夹:addons并选择要使用的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 的 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"
Run Code Online (Sandbox Code Playgroud)
现在在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您将替换include_path、browscap、error_log、的 php 目录路径的位置extension_dir。
就是这样。您现在可以从 XAMPP 控制面板启动 Apache。要从一个版本切换到另一个版本,您只需要C:\xampp\apache\conf\httpd.conf在重新启动 Apache 之前编辑和更改包含的 PHP 版本。
我使用Uniserver。
它具有内置的此功能。
就这么简单。
Uniform Server是Windows的免费轻量级WAMP服务器解决方案。不到24MB的模块化设计,包括最新版本的Apache2,Perl5,PHP(在PHP53,PHP54,PHP55或PHP56之间切换),MySQL5或MariaDB5,phpMyAdmin或Adminer4。无需安装!没有注册表灰尘!只需打开包装并开火!
它甚至可以在闪存驱动器上运行。具有cron仿真功能,支持perl,mariaDB,Mysql的几个版本,filezilla服务器以及其他一些功能。
| 归档时间: |
|
| 查看次数: |
142194 次 |
| 最近记录: |