メタデータの末尾にスキップ
メタデータの先頭に移動

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に設定します。

php-cgi
#!/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"