如何在CentOS上用apache實現多版本PHP同時執行

今天工作碰到客人原有的舊系統沒辦法支援PHP7,因為系統是用cakePHP1.3寫的,而新的網站我已經改用

PHP7.0來執行,所以這下就必須碰到在同一個domain裡面要共存兩個版本的PHP才行。網路上查了一下方法

大部分都是Nginx+php-fpm來達到。但其實apache本身也能夠做到一樣的事情。作法是這樣的

這邊假設你已經安裝好了原先系統上就已經有的apache與php了。

所以我們要做的第一件事情就是裝上第二個不同版本的PHP以及這裡最重要的模組 php-fcgid

$ yum –enablerepo=remi install php56 php-fcgid

裝好後你會在你的 /opt/ 中看到 remi 的資料夾,這裡面就會有你新安裝的PHP版本

接下來我們要做的就是修改apache中的設定讓第二個版本的PHP生效。

我們先去把原本被載入的新版本PHP給關起來吧!

$ cd /etc/httpd/conf.d
$ mv php.conf php.conf.org

做完以上步驟後apache在啟動的時候就不會自動載入你用yum所安裝的PHP了

剩下的就是修改我們的apache的設定檔了

$ cd /etc/httpd/conf
$ vim httpd.conf

找到你有兩個網站,所設定的路徑,這邊假設是以下狀況

$ <Directory "/var/www/html/php_70">
$     Options FollowSymLinks
$     AllowOverride None
$     Require all granted
$ </Directory>
$ <Directory "/var/www/html/php_56">
$     Options FollowSymLinks
$     AllowOverride None
$     Require all granted
$ </Directory>

這時候你只需要這改成這樣

$ <Directory "/var/www/html/php_70">
$     Options FollowSymLinks
$     AllowOverride None
$     Require all granted
$     DirectoryIndex index.html index.php
$     AddHandler application/x-httpd-php .php
$ </Directory>
$ <Directory "/var/www/html/php_56">
$     Options FollowSymLinks +ExecCGI
$     AllowOverride None
$     Require all granted
$     DirectoryIndex index.html index.php
$     AddHandler fcgid-script .php
$     FcgidWrapper /opt/remi/php56/root/bin/php-cgi .php
$ </Directory>

接著重新啟動你的 apache 就大功告成了!

參考:http://qiita.com/nnmr/items/d34f1712a0586301e6e4