20965


**どういう選択肢があるでしょうか？**

**PHP複数バージョン管理ツール「phpenv」**  
・どういうツール？  
・切り替えとはどういう意味？

**例えばですが**  
・同じCentOSサーバにも関わらず、サイト単位で、「PHP5」「PHP7」を指定して、それぞれ同時に使用することは可能？  
・それとも、「phpenv」で「PHP7」を指定したら、すべてのPHPが「PHP7」へ切り替わるのでしょうか？


CC BY-SA 3.0
2016-01-16T03:17:50.317
20964
2016-01-16T07:11:49.017
7886
question
php centos
PHP5をインストールしているCentOSで、PHP7も使用したい


> どういう選択肢があるでしょうか？

Dockerが今後流行りそうです。

PHP5.6+Apacheを入れただけのコンテナと、  
PHP7+Apacheを入れただけのコンテナの2つを用意して  
同じサーバーマシンでありながら2サイトを運営するということが可能です。  
（コンテナというのは仮想マシンと置き換えて理解するとわかり易いかと思います）

> phpenv

普通にPHPをインストールすると、いざバージョンを上げる時に大騒ぎですよね。  
phpenvというソフトに複数のバージョンのPHPをインストールしてあげて、  
コマンド1個で瞬時に切り替える事が出来ます。

> 切り替えとはどういう意味？

<https://github.com/phpenv/phpenv>  
このサイトから持ってきただけですが、このようにするだけで利用出来るPHPのバージョンを切り替えられます

[code]

    $ phpenv install php-5.3.20
    $ phpenv global 5.3.20
    
[/code]

また、localという概念があり、指定したディレクトリ配下のPHPはそちらのバージョンを利用するという事も可能なようです。

[code]

    $ phpenv local 5.3.20
    
[/code]

> 同じCentOSサーバにも関わらず、サイト単位で、「PHP5」「PHP7」を指定して、それぞれ同時に使用することは可能？

phpenvのコマンドとphpenv-apache-versionの切り替えコマンド  
<http://qiita.com/miosee/items/f0e388f09f084abab97a>

Qiitaで調べた所、そのものズバリな事をされている方の記事が見つかりました。


CC BY-SA 3.0
2016-01-16T04:46:27.807
20965
2016-01-16T04:46:27.807
13999
20964
answer


> 同じCentOSサーバにも関わらず、サイト単位で、「PHP5」「PHP7」を指定して、それぞれ同時に使用することは可能？

PHPを動かす方法にもいろいろありますが、狭義のCGI（毎回 `php-cgi`
を起動する）やmod_fcgid+`FCGIWrapper`を使った方法であれば、VirtualHostやパスごとにphp-
cgiのパスの指定を切り替えることで可能です。

  * [Apache2で複数バージョンのPHPを使い分ける - エーエイチレフ linuxサーバー技術情報](http://www.ahref.org/tech/server/server-tips/667.html)
  * [apache の FastCGI(mod_fcgid) で phpを動かしてみる | レンタルサーバー・自宅サーバー設定・構築のヒント](http://server-setting.info/centos/apache_fastcgi_fcgid_php.html)

一方で、yumでインストールした時のように Apache+mod_php
という構成の場合、Apache起動時にPHPを読み込んでしまうため、Apacheを複数起動する必要があります。

  * [CentOS 7でApacheのインスタンスごとに違うバージョンのPHPを利用する | 俺的備忘録 〜なんかいろいろ〜](http://orebibou.com/2015/06/centos-7%E3%81%A7apache%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%94%E3%81%A8%E3%81%AB%E9%81%95%E3%81%86%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AEphp%E3%82%92/)

PHP-FPMを使う場合もやはり、PHPのバージョンごとにPHP-FPMを起動する必要があります。

  * [php-buildで複数バージョンのPHP-FPMを用意する - hnwの日記](http://d.hatena.ne.jp/hnw/20130626)

なおmiyabiさんが紹介されているphpenv-apache-
versionは、Apacheが読み込むmod_phpの実体であるlibphp5.soまたはlibphp7.soを切り替えるツールですが、前述のようにmod_phpは複数バージョンを同時に読み込めないので、これ自体で併用できるようにはなりません。

というか、見たところ上記のツールはphp5とphp7それぞれのファイルの更新をやるだけのようなので、ファイル名の異なるphp5とphp7の間で切り替えるには別途[httpd.conf等を書き換える](http://qiita.com/ryurock/items/7d031440bb174a55a6a1#httpconf%E3%81%AE%E8%A8%AD%E5%AE%9A%E5%A4%89%E6%9B%B4)必要がありそうです。


CC BY-SA 3.0
2016-01-16T07:11:49.017
20972
2016-01-16T07:11:49.017
8000
20964
answer