複数バージョンのphpをapache+mod_fastcgiで扱う

前回は拡張子を変えるという紛らわしいやり方をしたが、これではそのままではうまく動かないフレームワークなどがあるので、ディレクトリ毎で調整するやりかたに変更。

apacheのバージョン

 
FastCgiWrapper Off
 
#それぞれのバージョンのphp-fpmプロセスを指定
ScriptAlias /fcgi-bin/ /var/www/fcgi-bin/
FastCgiExternalServer /var/www/fcgi-bin/php-fpm  -host 127.0.0.1:9019 -pass-header Authorization
FastCgiExternalServer /var/www/fcgi-bin/php-fpm70  -socket /var/run/php-fpm/php-fpm70.sock -pass-header Authorization
 
# http://host.name/php56/info.php
Alias /php56/ /var/www/php56/
<Directory "/var/www/php56">
allow from all
Options +Indexes
Action application/x-httpd-php-fastcgi /fcgi-bin/php-fpm
<FilesMatch ".+\.php$">
    SetHandler application/x-httpd-php-fastcgi
</FilesMatch>
</Directory>
 
# http://host.name/php70/info.php
Alias /php70/ /var/www/php70/
<Directory "/var/www/php70">
allow from all
Options +Indexes
Action application/x-httpd-php70-fastcgi /fcgi-bin/php-fpm70
<FilesMatch ".+\.php$">
    SetHandler application/x-httpd-php70-fastcgi
</FilesMatch>
 
</Directory>
 

これで 9019ポートで動かしてるphp-fpmはエイリアス/php56で、unix socketで動かしてるphp-fpmは/php70以降でアクセスできるようになる。