CORESERVERでのFastCGI/CGI版PHPの利用手順

GMOグループが運営するレンタルサーバーのCORESERVERでのFastCGI版PHPとCGI版PHPの利用手順を整理する。

設定ファイルを編集することで,PHP以外の任意のプログラムもCGIの仕組みで使うことができる。

導入

senooken.jpで運営しているサービス類は,2020-02-07 Fri時点ではCORESERVERのCORE-MINIで運営している。月額料金が約200円と安いのが理由だ。

CORESERVERの標準 (Apacheモジュール版) PHPのバージョンは7.1である。多くの場合はこれで問題ないのだが,動作させたいアプリケーションでPHPのバージョンが7.1より新しかったり,PHPのモジュールが足りない場合がある。

このような場合,FastCGIやCGIのPHPを使うことで,自前でビルドしたPHPを実行に使うことができ,バージョンや不足モジュールの問題を解消できる。

CORESERVERでのCGIの使い方は「 PHPをCGIとして動かす方法について | 基本的な質問 | よくある質問」に記載されている。

ただ,書かれている情報と異なるところや,新しくわかったところがある。忘れてしまうのでここにまとめておく。

基本操作

まず基本的なところを整理する。サイトで使用するPHPのバージョンは管理画面にログイン後,[サイト設定]>[個別のサイト]>[サイト設定の変更] から行える。

CORESERVERの個別のサイト設定画面

[サイト設定の変更] を選択すると [サイト設定の変更] 画面が表示され,SSLやPHPのバージョンを選択できる。

CORESERVERの [サイト設定の変更] 画面

ここで,左端のphp71のみモジュール版PHPで,それ以外はFastCGI版PHPとなる。

ラジオボタンでphpのバージョンを選択後,[サイト設定を変更する] を選択すると,2-3分後反映される。

CORESERVERでのPHPのバージョンの基本的な変更方法は以上だ。次から具体的なFastCGIとCGIの使用方法を説明する。

基本手順

FastCGIもCGIも基本的にどちらも以下の3の手順を踏む。

CORESERVERでのFastCGI/CGIの利用手順
  1. PHPのバージョンの選択
  2. CGIの実行ファイルの編集
  3. PHPの設定ファイルの編集

CGIの実行ファイルとPHPの設定ファイルは,/virtual/<username>/public_html/.fast-cgi-bin/ に格納されている。この中に以下のような設定ファイル群が格納されている。

php.cgi    php5.ini    php54.fcgi  php56.fcgi  php71.fcgi  php73.fcgi
php.fcgi   php52.cgi   php54.ini   php56.ini   php71.ini   php73.ini
php.ini    php53.cgi   php55.cgi   php70.cgi   php72.cgi   php74.cgi
php4.cgi   php53.fcgi  php55.fcgi  php70.fcgi  php72.fcgi  php74.fcgi
php5.cgi   php53.ini   php55.ini   php70.ini   php72.ini   php74.ini
php5.fcgi  php54.cgi   php56.cgi   php71.cgi   php73.cgi

この内,ini拡張子はPHPの設定ファイルであり,fcgiとcgiの拡張子のファイルの中身は以下の通りになっており,CGIで実行するプログラムを実行している。

php74.fcgi
#!/bin/bash
PHPRC="php74.ini"
PHP_FCGI_CHILDREN=1
PHP_FCGI_MAX_REQUESTS=10000
export PHPRC
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec /usr/local/bin/php74
php74.cgi
#!/bin/sh
exec /usr/local/bin/php74

これらの最後のexecコマンドの実行先を自分のプログラムのパスに差し替えれれば,CGIで自前のプログラムも実行できる。

FastCGI

1. FastCGI版では,まず管理画面でPHPのバージョン (例: php74) を選択することで,FastCGI版PHPのバージョンを選択できる。

2. その後,/virtual/<username>/public_html/.fast-cgi-bin/phpXX.fcgiファイルを編集する。XXは選択したPHPのバージョン (例: 7.4の場合74) となる。

このファイルの最終行で,CORESERVERにインストールされている/usr/local/bin/phpXXを実行している。必要に応じて実行先を変更する。例えば,/virtual/<username>/.local/bin/php-cgiなどだ。

3. fcgiファイルのPHPRC環境変数で設定されている通り,既定のFastCGI版PHPは同じディレクトリーのphpXX.iniが設定ファイルとなっているので,必要に応じて設定を編集する。

なお,重要な点としてFastCGI版PHPでは,管理画面からバージョンを切り替えたタイミングで設定ファイル (phpXX.ini) を読み込むので注意する。例えば,起動中にextension指令でモジュールを追加しても,そのままでは反映されない。設定ファイルを編集したら,反映させるために一度他のバージョンに切り替えて戻すことに注意する。

CGI

CGI版もFastCGI版と似たような手順を踏むが,バージョンの指定方法が異なる。

1. CGI版のPHPを使いたいディレクトリーの.htaccessに以下の内容 (XXはPHPのバージョン) を記述することで,CGI版PHPのバージョンを指定する。

AddHandler application/x-httpd-phpcgiXX .php

なお,ここで公式マニュアルではXXの記述を省いた例 (AddHandler application/x-httpd-phpcgi .php) を掲載している。自分で試した限り,バージョンを省くと実行できなかったので,バージョンの指定は必須だ。

2. その後,FastCGI同様必要に応じて/virtual/<username>/public_html/.fast-cgi-bin/phpXX.cgiファイルを編集する。XXは選択したPHPのバージョン (例: 7.4の場合74) となる。

3. CGI版のPHPの設定ファイルは,PHPの設定ファイルの検索規則 (PHP: 設定ファイル – Manual)に従い,同じディレクトリーのphp.iniとなる。

fcgiファイルでPHPRC環境変数を用いて変更していたように,ファイル名や場所を変更することは可能だ。

結論

ここまででCORESERVERでのFastCGI版PHPとCGI版PHPの設定方法を説明したので,両者の違いを以下の表に整理した。

CORESERVERのFastCGI版PHPとCGI版PHPの設定方法
項目 FastCGI CGI
バージョンの変更 管理画面 .htaccess内の
AddHandler application/x-httpd-phpcgiXX .php
設定ディレクトリー /virtual/<username>/public_html/.fast-cgi-bin/
CGIの実行ファイル phpXX.fcgi phpXX.cgi
PHPの設定ファイル phpXX.ini php.ini
設定の反映タイミング バージョン切替時 即時

自前のプログラムを使いたい場合は,fcgiやcgiファイルのexecコマンドの引数に自前プログラムのフルパスを指定する。

自前で用意したPHPの拡張モジュールを使用したい場合,phpXX.iniphp.iniextension_dir指令でモジュールの格納ディレクトリーを指定し,extension指令により有効化対象のモジュールを指定できる。

実際に編集する場合は,.fast-cgi-binディレクトリーをバックアップしたほうがよいだろう。

CORESERVERでFastCGI/CGIにより自前プログラムや自前のPHPを使う場合の参考にしたい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です