首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法在XAMPP中使用两个PHP版本?

有没有办法在XAMPP中使用两个PHP版本?
EN

Stack Overflow用户
提问于 2017-08-21 13:58:11
回答 19查看 297.2K关注 0票数 227

我们使用PHP7.0运行XAMPP,因为我们的新产品需要PHP7。

但也有一些老项目使用mysql_connect等函数,这些函数在PHP7.0中被删除了。

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

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

EN

回答 19

Stack Overflow用户

发布于 2018-03-31 18:10:03

如果可以通过一个xampp安装同时使用多个PHP版本,为什么还要在PHP版本之间切换

对于单个xampp安装,您有两个选项:

,这是一个只适用于旧项目目录的较旧版本的

  1. Run,这在大多数情况下都是有用的。您可能有一个或两个旧项目要与旧的PHP版本一起运行。只需将xampp配置为仅对这些项目目录运行较旧的PHP版本。

在单独的xampp:端口上运行一个较旧的PHP版本。有时,您可能需要将一个旧项目升级到最新的PHP版本,同时您需要在新的PHP版本和旧的PHP版本之间来回运行同一个项目。为此,您可以在不同的端口(比如8056)上设置一个较旧的PHP版本,这样当您转到http://localhost/any_project/时,xampp会运行PHP7,而当您转到http://localhost:8056/any_project/时,xampp会运行PHP5.6。

在虚拟主机上运行一个旧版本的

  1. Run:你可以创建一个像localhost56这样的虚拟主机来运行PHP5.6,而你可以在本地主机上使用PHP7。

让我们来设置它

PHP第1步:下载

因此,如果您有运行在xampp下的PHP7,则需要添加一个较旧的PHP版本(比如PHP5.6)。从php.net下载非线程安全(Non Thread Safe)版本的PHP压缩文件(旧版本请参阅archive ),并在c:\xampp\php56下解压文件。线程安全版本不包括php-cgi.exe。

第2步:配置php.ini

在记事本中打开文件c:\xampp\php56\php.ini。如果该文件不存在,请将php.ini-development复制到php.ini并在记事本中打开它。然后取消对以下行的注释:

代码语言:javascript
复制
extension_dir = "ext"

另外,如果Apache config httpd-xampp.conf中存在以下行

代码语言:javascript
复制
SetEnv PHPRC "\\path\\to\\xampp\\php"

使用前导#(散列字符)将其注释掉。

Apache第3步:配置

打开xampp控制面板,单击apache的config按钮,然后单击Apache (httpd-xampp.conf)。将打开一个文本文件。将以下设置放在文件的底部:

代码语言:javascript
复制
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.

PHP第4步(选项1):添加目录以运行特定的版本

现在您可以设置将在PHP5.6中运行的目录。只需在配置文件(步骤3中的httpd-xampp.conf)的底部添加以下内容即可设置目录。

代码语言:javascript
复制
<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>

PHP第4步(选项2):在单独的端口上运行较旧的版本

现在,要在端口8056上设置PHPV5.6,请将以下代码添加到配置文件的底部(步骤3中的httpd-xampp.conf)。

代码语言:javascript
复制
Listen 8056
<VirtualHost *:8056>
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</VirtualHost>

PHP第4步(选项3):在虚拟主机上运行较旧的版本

要在目录( htdocs56 )上创建虚拟主机( localhost56 )以在http://localhost56上使用PHPV5.6,请在所需位置创建目录htdocs56,并将localhost56添加到主机文件(see how)中,然后将以下代码添加到配置文件(步骤3中的httpd-xampp.conf)的底部。

代码语言:javascript
复制
<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)。

票数 234
EN

Stack Overflow用户

发布于 2017-08-23 17:39:03

您可以像我一样安装并安装两个不同的download:(第一个是php7,第二个是php5)

如果您不想这样做,我建议您使用wamp并更改版本,如显示的here

票数 44
EN

Stack Overflow用户

发布于 2017-08-27 22:04:40

我推荐使用Docker,它允许你将环境分成不同的组件,并随时混合和匹配你想要的组件。

Docker允许你用MySQL运行一个容器,用PHP运行另一个容器。因为它们是独立的图像,你可以有两个容器,一个PHP5,另一个PHP7,你可以启动你想要的任何一个,端口80可以映射到两个容器。

https://hub.docker.com有很多预配置的镜像,你可以很轻松地安装和运行它们。

我还添加了portainer作为镜像,它允许您从docker镜像中管理docker设置的各个方面(我确实在启动时启动了这个容器,以避免使用命令行)。它不会为你做所有的事情,有时从命令行第一次配置和启动镜像会更容易,但是一旦设置好了,你就可以通过web界面启动和停止它们。

还可以同时运行这两个容器,并将单独的端口映射到每个容器。因此,端口80可以映射到PHP5,81可以映射到PHP81(如果您在2017年观看本文,也可以映射到PHP7)。

有各种关于如何安装Docker( https://docs.docker.com/engine/installation/)的教程,还有很多其他的“如何”输入的东西。尝试使用http://www.masterzendframework.com/docker-development-environment/进行开发环境配置。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45790160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档