我们使用PHP 7.0运行XAMPP,因为我们的新产品需要PHP 7。
但也有一些旧的项目使用mysql_connect等函数。这些在PHP 7.0中被删除。
那么,是否有一种方法可以轻松地在XAMPP中更改PHP版本?
注意:请不要建议将旧项目升级到与新版本兼容,因为我无法做到这一点 这些决定是我作为开发人员(只是一名员工)无法得到的。
我们使用PHP 7.0运行XAMPP,因为我们的新产品需要PHP 7。
但也有一些旧的项目使用mysql_connect等函数。这些在PHP 7.0中被删除。
那么,是否有一种方法可以轻松地在XAMPP中更改PHP版本?
注意:请不要建议将旧项目升级到与新版本兼容,因为我无法做到这一点 这些决定是我作为开发人员(只是一名员工)无法得到的。
当前回答
我确实在安装magento2时遇到了同样的问题,而它需要~7.3.0,但我有7.4.1。我用这个方法降低了php的版本。
步骤1:从这里下载Php版本 https://windows.php.net/downloads/releases/archives/ 并将此版本粘贴到c:\xampp\,命名为“php71”
步骤2:设置虚拟主机环境并做一些其他更改。 转到“c:\xampp/\pache\conf\extra\httpd-vhosts.conf”,并将代码片段放在行末
<VirtualHost 127.0.0.1:80>
DocumentRoot "C:/xampp/htdocs/magento/crashcourse/"
ServerName magento2.test
<Directory "C:/xampp/htdocs/magento/crashcourse/">
Require all granted
</Directory>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php71-cgi
</FilesMatch>
</VirtualHost>
转到“C:\Windows\System32\drivers\etc\hosts”,然后使用管理员权限编辑文件,然后在行末添加代码。
127.0.0.1 magento2.test
转到Apache配置文件“c:/xampp/ Apache /conf/extra/httpd-xampp.conf”,并在行末粘贴以下代码
ScriptAlias /php71 "C:/xampp/php71"
Action application/x-httpd-php71-cgi /php71/php-cgi.exe
<Directory "C:/xampp/php71">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
SetEnv PHPRC "C:/xampp/php71"
</Directory>
现在,一切都准备好了。 去网址:http://magento2.test一切工作正常!
其他回答
我建议使用Xampp PHP切换器由JackieDo。 在非常简单的安装之后,你可以使用命令xphp switch [VERSION]来更改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。下面的说明适用于Windows。
为Windows安装最新的XAMPP版本(在我的例子中是PHP 7.1) 确保Apache没有从XAMPP控制面板运行 将XAMPP安装目录下的php目录重命名,如C:\ XAMPP \php改为C:\ XAMPP \php-7.1.11。 下载你想要运行的PHP版本(例如:PHP 5.4.45) 将php目录从您下载的版本移动到XAMPP安装目录。重命名它,使其包含PHP版本。例如C:\xampp\php-5.4.45。
现在你需要编辑XAMPP和Apache配置:
在C:\xampp\apache\conf\httpd.conf中,找到PHP的xampp设置,您应该将其更改为如下内容:
你必须注释(用#)其他的PHP版本,所以只有一个包含将被解释在同一时间。
#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"
Now in C:\xampp\apache\conf\extra directory rename httpd-xampp.conf to httpd-xampp.conf.7.1 and add a new configuration file for httpd-xampp.conf.5.4.45. In my case, I copied the conf file of another installation of XAMPP for php 5.5 as the syntax may be slightly different for each version. Edit httpd-xampp.conf.5.4.45 and httpd-xampp.conf.7.1 and replace there all the reference to the php directory with the new php-X.X version. There are at least 10 changes to be made here for each file. You now need to edit php.ini for the two versions. For example for php 7.1, edit C:\xampp\php-7.1.11\php.ini where you will replace the path of the php directory for include_path, browscap, error_log, extension_dir..
就是这样。您现在可以从XAMPP控制面板启动Apache。要从一个版本切换到另一个版本,你只需要在重新启动apache之前编辑C:\xampp\apache\conf\httpd.conf并更改包含的PHP版本。
也许有点晚了,但我正在使用批处理重命名PHP文件夹(对我几年前发现的phpswitch略有修改)。
将不同的文件夹复制到XAMPP安装中。每个PHP文件夹(活动文件夹除外)接收版本号作为后缀(例如。php_5.6.32)。在所有PHP文件夹中,创建一个文件(PHP_VERSION),其中只包含相应的版本号,因此Script可以获取该信息。但这些都在自述书中描述了。
从PHP7开始,httpd-xamp .conf加载php7ts.dll而不是php5ts.dll。因此,我必须扩展脚本(PHPSwitch.php),以遵循相同的方法重命名这些配置文件。
$renameCur = new PHPSwitch_Rename($currInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName'] . '_' . $currInst['version']);
$renameNew = new PHPSwitch_Rename($newInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName']);
$apache_curent = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp.conf";
$apache_curent_rename = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp_".$currInst['version'].".conf";
$apache_new = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp_".$newInst['version'].".conf";
$apache_new_rename = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp.conf";
$renameCur_apache_conf = new PHPSwitch_Rename($apache_curent, $apache_curent_rename);
$renameNew_apache_conf = new PHPSwitch_Rename($apache_new, $apache_new_rename);
$transaction = new PHPSwitch_Rename_Transaction();
$transaction->add($renameCur);
$transaction->add($renameNew);
$transaction->add($renameCur_apache_conf);
$transaction->add($renameNew_apache_conf);
我确实在安装magento2时遇到了同样的问题,而它需要~7.3.0,但我有7.4.1。我用这个方法降低了php的版本。
步骤1:从这里下载Php版本 https://windows.php.net/downloads/releases/archives/ 并将此版本粘贴到c:\xampp\,命名为“php71”
步骤2:设置虚拟主机环境并做一些其他更改。 转到“c:\xampp/\pache\conf\extra\httpd-vhosts.conf”,并将代码片段放在行末
<VirtualHost 127.0.0.1:80>
DocumentRoot "C:/xampp/htdocs/magento/crashcourse/"
ServerName magento2.test
<Directory "C:/xampp/htdocs/magento/crashcourse/">
Require all granted
</Directory>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php71-cgi
</FilesMatch>
</VirtualHost>
转到“C:\Windows\System32\drivers\etc\hosts”,然后使用管理员权限编辑文件,然后在行末添加代码。
127.0.0.1 magento2.test
转到Apache配置文件“c:/xampp/ Apache /conf/extra/httpd-xampp.conf”,并在行末粘贴以下代码
ScriptAlias /php71 "C:/xampp/php71"
Action application/x-httpd-php71-cgi /php71/php-cgi.exe
<Directory "C:/xampp/php71">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
SetEnv PHPRC "C:/xampp/php71"
</Directory>
现在,一切都准备好了。 去网址:http://magento2.test一切工作正常!