Problem
- Web公開サービスで PHP を使ったウェブサイトを公開したいです。どうすればいいですか。
Cause
Web公開サービスで PHP を使ったウェブアプリケーションを動作させるためには事前設定が必要になります。
Solution
PHP ファイルの関連付けを設定する
public_html(SSL の場合は public_html_ssl)ディレクトリ配下に.htaccessファイルを作成し、以下の3行を記述してください。既に .htaccessファイルが存在する場合は、以下の3行を追記してください。
AddHandler fcgid-script .php FcgidWrapper <ホームディレクトリ>/public_html(SSL の場合は public_html_ssl)/cgi-bin/php-cgi .php Options +ExecCGI
PHP 実行用のラッパースクリプトを作成する
public_html(SSL の場合は public_html_ssl)ディレクトリ配下にcgi-binディレクトリを作成し、パーミッションを 755 に設定します。
以下内容の php-cgi ファイル(ここからダウンロードできます)を cgi-bin ディレクトリ配下にアップロードし、パーミッションを700に設定します。
#!/bin/sh exec /usr/bin/php-cgi
PHP ファイルの関連付けを書き換える
.htaccess ファイルで .php とは異なる拡張子のファイルを PHP に関連付けしている場合、そのファイルは PHP として動作しません。
# CGI ファイルや dhtml ファイルを PHP スクリプトとして実行する AddType application/x-httpd-php .cgi .dhtml
以下のように、 拡張子に fcgid-script ハンドラと mod_fcgid ラッパースクリプトを関連付けるよう書き換えます。
# CGI ファイルや dhtml ファイルを PHP スクリプトとして実行する AddHandler fcgid-script .cgi .dhtml FcgidWrapper <ホームディレクトリ>/public_html(SSL の場合は public_html_ssl)/cgi-bin/php-cgi .cgi FcgidWrapper <ホームディレクトリ>/public_html(SSL の場合は public_html_ssl)/cgi-bin/php-cgi .dhtml
PHP 系ディレクティブを .user.ini ファイルに書き直す
.htaccess ファイルで php_value ディレクティブや php_flag ディレクティブを使っているとエラーになります。
php_flag magic_quotes_gpc Off php_value max_input_time "120"
該当する行を削除して保存します。
同じディレクトリに .user.ini ファイルがなければ作成します。パーミッションは 600 としてください。
.user.ini ファイルに先ほど削除したディレクトリの内容を php.ini 形式で書き直します。
[PHP] magic_quotes_gpc = Off max_input_time = "120"
.user.ini ファイルは300秒に1回の頻度で再読み込みされます。変更してもすぐには反映されませんのでご注意ください。
セッションディレクトリを準備する
PHP セッション機能(ログインの保持などに利用されます)を利用している場合、セッションディレクトリを準備しなければ正常に動作しません。
ホームディレクトリに phpsession ディレクトリを作成します。パーミッションは 701 としてください。
ドキュメントルートディレクトリ(public_html(SSLなし)・public_html_ssl (SSL))に .user.ini ファイルがなければ作成します。パーミッションは 600 としてください。
.user.ini ファイルに以下のように session.save_path 設定を記述します
[PHP] session.save_path = "ホームディレクトリの絶対パス/phpsession"