提问者:小点点

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


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

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

那么,有没有办法在XAMPP中轻松更改PHP版本呢?

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


共1个答案

匿名用户

当您可以通过一个xampp安装同时使用多个PHP版本时,为什么要在PHP版本之间切换呢?对于单个xampp安装,您有两个选项:

>

  • 仅为旧项目的目录运行较旧的PHP版本:这在大多数情况下会起到作用,您可能有一两个旧项目打算用较旧的PHP版本运行。只需将xampp配置为仅为那些项目目录运行较旧的PHP版本。

    在XAMPP的单独端口上运行较旧的PHP版本:有时,当您需要在新的和较旧的PHP版本上来回运行相同的项目时,您可能会将旧的项目升级到最新的PHP版本。然后,您可以在不同的端口(例如8056)上设置较旧的PHP版本,因此当您转到http://localhost/any_project/xampp运行PHP 7,而当您转到http://localhost:8056/any_project/xampp运行PHP 5.6。

    在virtualhost上运行较旧的PHP版本:您可以创建一个像localhost56这样的virtualhost来运行PHP5.6,同时可以在LocalHost上使用PHP7。

    让我们设置一下。

    步骤1:下载PHP

    因此,您在xampp下运行PHP7,您希望在其中添加一个较旧的PHP版本,例如PHP5.6。从PHP.NET下载nts(非线程安全)版本的PHP zip归档文件(有关旧版本,请参阅归档文件),并解压缩C:\xampp\php56下的文件。线程安全版本不包括php-cgi.exe。

    步骤2:配置php.ini

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

    extension_dir = "ext"
    

    步骤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>
    

    注意:如果需要,您可以在步骤1到3之后向xampp安装中添加更多的PHP版本。

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

    现在您可以设置将在PHP5.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版本]

    现在,要将PHPV5.6设置为端口8056,请将以下代码添加到配置文件的底部(步骤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上使用PHPV5.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-cgi.exe”中格式错误的头:错误的头

    如果遇到上述错误,请再次打开httpd-xampp.conf,并用前导的#(哈希字符)注释掉下面的行。

    SetEnv PHPRC "\\path\\to\\xampp\\php"