2017-03-09 244 views
3

我在本地服务器上有两个项目,一个项目运行PHP5.6,另一个运行PHP7.0。现在可以根据项目启用这两个版本吗?我已经尝试在其中一个项目htaccess中添加AddHandler application/x-httpd-php7 .php,但它不起作用。目前,服务器上已经安装了PHP7.0和PHP5.6-fpm。以下是phpinfo的截图。在同一台服务器上运行两个PHP版本

enter image description here

+0

什么是你'MOD-enabled'的输出Apache目录?你确定你已经启用了php5.x和php7.0x吗? – hassan

+0

http://askubuntu.com/questions/50344/how-to-have-two-version-of-php-installed-and-switch-easily This –

+0

嗨@HassanAhmed,只有php7.0和php5.6-fpm已启用。当我启用php5.6 Apache崩溃。也许它弄糊涂得到什么版本。 – Makubex

回答

4

打完了整整一天在谷歌搜索。我设法在不同的php版本中运行FastCgi中的两个项目。感谢这个forum的家伙。我卸载了包括apache在内的所有东西,然后重新开始。以下是我用于在本地服务器上启用两个版本的PHP的步骤。顺便说一句,我的电脑上的Linux Mint的18

  1. 运行假设你已经安装了Apache,创造了这两个项目的虚拟主机,并添加了必要的PHP的PPA。让我们调用项目site56.local为php5.6和site70.local为php7.0。通过运行安装php5.6-fpm和php7.0-fpm。

须藤易于得到安装php5.6-FPM

须藤易于得到安装php7.0-FPM

  • 创建两个文件在/ usr/lib/cgi-bin /下(老实说我不知道​​这一步是否仍然有必要),然后保存。
  • 须藤纳米/ usr/lib中/的cgi-bin/php56-FCGI

    须藤纳米/ usr/lib中/的cgi-bin/php70-FCGI

  • 打开php56 conf文件”/etc/apache2/conf-available/php5.6-fpm.conf“并添加此配置并保存。

    enter image description here

  • 现在启用新的Apache配置。

  • 须藤a2enconf php5.6-FPM

  • 如果安装php5.6和php5.7,请确保您禁用此两重启阿帕奇。
  • 须藤a2dismod php5.6 php7.0

    须藤systemctl重启的apache2

  • 创建.htacces上应该运行该项目文件在php7.0上添加这个处理程序。
  • 的AddHandler php70-FCGI .PHP

  • 现在两个项目上创建的phpinfo文件,如果你看到这样的事情,那么恭喜你!
  • PS:请确保您在apache2.conf或者httpd.conf中启用的htaccess

    site56.local/phpinfo.php的 enter image description here

    site70.local/phpinfo.php的 enter image description here

    +0

    如果你想用PHP 5.5.9而不是PHP 5.6,那么你需要安装php5 -fpm 另外,php5-fpm的内容。 conf文件应该在此链接中:https://pastebin.com/3UgdxNV7 –

    0

    在尝试按照你的指示之后,我找到了一个可能更简单的方法来获得相同的结果。

    通过添加以下行

    ProxyPassMatch "^/php70project/.*\.php(/.*)?$" "fcgi://localhost:9070/var/www/" enablereuse=on 
    
    在Apache虚拟主机配置

    ,你可以在你的虚拟主机的根在/ var/WWW目录更改php70project里面的PHP版本7版本运行作为FastCGI的。

    以下方法为使用Unix套接字

    ProxyPassMatch "^/php70project/.*\.php(/.*)?$" "unix:/var/run/php70fpm.sock|fcgi://localhost/var/www" 
    

    按预期不工作。 不幸的是,我不能找到正确的代码来得到这个工作,但由于没有一个例子,使用该子页面上的子文件夹使用unix套接字https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html它可能是不可能的。

    0

    它不适用于debian 9 Stretch。我花了一段时间来firgure出来做什么,但最后我发现这似乎更容易的解决方案:

    sudo apt-get install php5.6-fpm 
    
    sudo apt-get install php7.0-fpm 
    
    sudo a2enconf php5.6-fpm 
    

    如果安装php5.6和php5.7,请确保您禁用此两重启阿帕奇。

    sudo a2dismod php5.6 php7.0 
    
    sudo systemctl restart apache2 
    

    在这一点上,所有的网站必须在PHP 5.6上工作。

    对于谁需要PHP 7点,在虚拟主机中加入这一行:

    ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/var/run/php/php7.0-fpm.sock|fcgi://localhost/path/to/my/main/file" 
    

    它应该做的伎俩:)

    0

    我试图执行Makubex的解决方案,它的工作。刚刚安装的LAMP只有一个问题,那就是fastcgi没有启用。 我刚刚使用以下脚本安装了php,之后启用了fastcgi。

    sudo apt-get install libapache2-mod-fastcgi php5.6-fpm php5.6 php5.6-dev php5.6-mcrypt php5.6-mbstring php5.6-mysql php5.6-zip php5.6-gd php5.6-xml php7.1-fpm libapache2-mod-fastcgi php7.1-fpm php7.1 php7.1-dev php7.1-mbstring php7.1-mysql php7.1-zip php7.1-gd php7.1-xml php7.1-curl php7.1-intl php7.1-json php7.1-mcrypt 
    

    然后:

    a2enmod actions 
    a2enmod fastcgi 
    

    在此之后,该解决方案完美地工作。 我从Run multiple PHP version on the same server using php-fpm and xdebug on Ubuntu 16.04

    1

    首先拿到了两个以上,确保所有的PHP相关configraution是禁用的运行以下命令:

    #LS -la的/ etc/apache2的/启用的conf-| grep php

    #ls -la/etc/apache2/mods-enabled | grep的PHP

    设置不同版本的PHP-FPM的特定部位:

    添加下面一行在现有的虚拟主机文件。

    Include "conf-available/php7.2-fpm.conf" 
    

    例如,

    #VIM /etc/apache2/sites-enabled/symfony.local.conf

    <VirtualHost *:80> 
        ServerName symfony.local 
    
        Include "conf-available/php7.2-fpm.conf" 
    
        ServerAdmin [email protected] 
        DocumentRoot /var/www/symfony.local/curr/public 
    
        <Directory /var/www/symfony.local/curr/web> 
         AllowOverride All 
        </Directory> 
    </VirtualHost> 
    
    相关问题