19
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

同一apache内でモジュール版phpとcgi版phpを共存させる

Last updated at Posted at 2014-04-18

同一apache内でモジュール版phpとcgi版phpを共存させる

apache版モジュールのphpを動かしつつ、
特定のディレクトリではcgi版の別のphpを動かす設定。

apache2.22 の場合だけど、2系ならたぶん同じような感じじゃないかな。

apacheモジュール版php

yum でも apt-get でも brew でもいいからとりあえずパッケージ入れたらモジュール版になると思う。

ソースからビルドしたければ以下のオプションつける。

bash
./configure --with-apxs2 

で、ビルドしてインストール。make && make install

これでapache内で特に指定しない場合のphpはこれで動くようになるはず。

cgi版php

phpのビルド

適宜読み替えてください。

ex) php-5.3.28 をソースから入れる場合。

とりあえずソースは /usr/local/src/php-5.3.28 に置くとして、
インストールディレクトリも分けておきたい。

そのために最低限必要なオプションはこんな感じ。

bash
./configure  \
  --prefix=/usr/local/lib/php-5.3.28  \
  --with-config-file-path=/usr/local/lib/php-5.3.28

--with-config-file-pathphp.iniを読みにいく場所も指定しておくとよさげ。

で、ビルドしてインストール。make && make install

apacheの設定

cgi版phpの準備

apacheのconfで
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
ってなってる場合。

デフォルトだと ScriptAlias で指定してある場所でないとcgi動かないので、
そちらにcgi版phpをコピーする。

cp /usr/local/lib/php-5.3.28/bin/php-cgi /usr/local/apache2/cgi-bin/php53-cgi

cgi-binの設定が

httpd.conf
<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
+    Options +FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>

とかシンボリックリンク辿る設定になってれば、シンボリックリンクでもいい。

confの設定

最後に、phpを特定のcgi版で動かしたい場合のconfの設定。

httpd.conf
<Directory /Users/local/apache2/htdocs/php53>
    Options Indexes FollowSymLinks
    AllowOverride All

+    Action php53 /cgi-bin/php53-cgi
+    AddHandler php53 .php

    Order allow,deny
    Allow from all
</Directory>

もしくは

httpd.conf
<VirtualHost *:80>
    DocumentRoot "/Users/local/apache2/htdocs"
+    Action php53 /cgi-bin/php53-cgi
+    AddHandler php53 .php
</VirtualHost>

VirtualHostディレクティブにもDirectoryディレクティブにも書けるので、お好きなように。

Action php53 /cgi-bin/php53-cgiphp53って名前のActionを定義して、
AddHandler php53 .phpで拡張子を関連づける。

ここで書いた設定はモジュール版phpよりも優先される。
他にも同居するバージョン増やしたければ同じやり方でおk。

追記@2014/04/21

ソースから入れたphpにエクステンションを入れる場合の例

peclの場合

各バージョンのphpにpecl付属してるので、これでおk。

bash
/usr/local/lib/php-5.3.28/bin/pecl install redis
ソースから入れる場合

phpize./configureに一手間必要なのでちょっとめんどくさい。

bash
cd /usr/local/src/memcached-2.0.0b2
/usr/local/lib/php-5.3.28/bin/phpize
./configure --with-php-config=/usr/local/lib/php-5.3.28/bin/php-config
19
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?