2017-03-09 249 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> 
    
    相關問題