有没有办法在 XAMPP 中使用两个 PHP 版本?
我们使用 PHP 7.0 运行 XAMPP,因为我们的新产品需要 PHP 7。
但是有些旧项目使用诸如 等功能。这些在 PHP 7.0 中被删除。mysql_connect
那么,有没有办法在XAMPP中轻松更改PHP版本?
注意:请不要建议将旧项目升级到与新版本兼容,因为我无法做到这一点,因为我作为开发人员(只是员工)无法获得的决定。
我们使用 PHP 7.0 运行 XAMPP,因为我们的新产品需要 PHP 7。
但是有些旧项目使用诸如 等功能。这些在 PHP 7.0 中被删除。mysql_connect
那么,有没有办法在XAMPP中轻松更改PHP版本?
注意:请不要建议将旧项目升级到与新版本兼容,因为我无法做到这一点,因为我作为开发人员(只是员工)无法获得的决定。
通过单个 xampp 安装,您有 2 个选项:
仅对旧项目的目录运行较旧的 PHP 版本:这将在大多数时候达到目的。您可能有一个或两个旧项目打算使用较旧的PHP版本运行。只需将 xampp 配置为仅针对这些项目目录运行较旧的 PHP 版本即可。
在单独的 xampp 端口上运行较旧的 PHP 版本:有时,您可能要将旧项目升级到最新的 PHP 版本,同时需要在新的 PHP 版本和旧的 PHP 版本之间来回运行相同的项目。为此,您可以在其他端口(例如8056)上设置较旧的PHP版本,因此当您转到时,xampp将运行PHP 7,当您转到xampp时,将运行PHP 5.6。http://localhost/any_project/
http://localhost:8056/any_project/
在虚拟主机上运行较旧的 PHP 版本:您可以创建像localhost56这样的虚拟主机来运行PHP 5.6,同时您可以在localhost上使用PHP 7。
第 1 步:下载 PHP
所以你有PHP 7在xampp下运行,你想添加一个较旧的PHP版本(比如PHP 5.6)。从 php.net 下载 PHP zip 存档的 nts(非线程安全)版本(有关旧版本,请参阅存档),然后提取 下的文件。线程安全版本不包括 php-cgi.exe。c:\xampp\php56
第 2 步:配置php.ini
在记事本中打开该文件。如果该文件不存在,请复制到记事本并在记事本中打开它。然后取消注释以下行:c:\xampp\php56\php.ini
php.ini-development
php.ini
extension_dir = "ext"
此外,如果Apache配置中存在以下行httpd-xampp.conf
SetEnv PHPRC "\\path\\to\\xampp\\php"
用前导 #(哈希字符)注释掉它。
第 3 步:配置 apache
打开 xampp 控制面板,单击 apache 的配置按钮,然后单击 。将打开一个文本文件。将以下设置放在文件底部: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 版本]
要在目录 (htdocs56) 上创建虚拟主机 (localhost56) 以在 http://localhost56 上使用 PHP v5.6,请在所需位置创建目录 htdocs56 并将 localhost56 添加到主机文件中(了解如何操作),然后将以下代码添加到配置文件的底部(从步骤 3 开始)。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>
完成:保存并重新启动 Apache
保存并关闭配置文件。从 xampp 控制面板重新启动 apache。如果您选择选项2,则可以在xampp控制面板中看到列出的其他端口(8056)。
您可以下载所需的任何版本的PHP,并将它们放入自己的目录中,例如
c:\php5\
c:\php7\
您需要做的就是告诉您的Web服务器(Apache)要使用哪个版本的PHP,您可以通过加载相应的模块来执行此操作。在 Apache 中,您可以通过查找文件然后编辑相应的行来执行此操作:httpd.conf
LoadModule php7_module c:\php7\libphp7.so
当然,您必须找出正确的路径 - 这仅用于说明。
保存并重新启动服务器。请注意,如果不重新启动它,更改将不会生效。httpd.conf
没有GUI开关可以做到这一点,你需要编辑文件,然后重新启动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安装。
编辑1-十一月-2017:显然,有些人说Windows上没有文件。我给出的答案是根据我在Mac上设置内容的方式改编的(Mac确实使用文件而不是)。然而,答案的原理仍然完全正确。您正在使用 Apache 的配置文件来指定 PHP 模块 ( 或 ) 在系统上的位置。因此,Windows的唯一区别是文件名和/或路径位置。我给出的答案对于Apache / PHP的普通安装也是正确的(根本没有XAMPP)。.so
.so
.dll
httpd.conf
.so
.dll