■PHPスクリプトを利用したウェブサイトを運用されている方々へ System9 で PHP スクリプトの実行方式が変わるため、そのままでは PHP スクリプトが正常に動作しない場合があります。 System8 Apache モジュール 方式 Apache に組み込まれた PHP 実行用モジュールが PHP スクリプトを実行する。 PHP スクリプトの実行ユーザ・グループは apache/apache ファイルやディレクトリに対して、apache ユーザに対するゆるやかなパーミッションを設定する必要がある。 System9 CGI 方式 (mod_fcgid + suEXEC) 外部のPHP実行用プログラムが PHP スクリプトを実行する。 PHP スクリプトの実行ユーザ・グループは ウェブサイトの所有ユーザ・グループ 適切なパーミッションの設定 System9 では公開しているPHPスクリプトやディレクトリがその他のユーザから書き込み可能である必要はありません。 その他のユーザの書き込み権限を落としてください。データファイルについても出来る限り同様にしてください。 確認&設定例 -bash-4.1$ ls -l 合計 8 drwxrwxrwx. 2 someone る -rw-r--r--. 1 someone drwxr-xr-x. 2 someone -rw-rw-rw-. 1 someone -bash-4.1$ chmod go-w -bash-4.1$ ls -l 合計 8 drwxrwxr-x. 2 someone -rw-r--r--. 1 someone drwxr-xr-x. 2 someone -rw-rw-r--. 1 someone somegrp 4096 1月 28 18:25 2013 data somegrp 520 1月 28 18:24 2013 index.php somegrp 4096 1月 28 18:26 2013 lib somegrp 1020 4月 28 18:27 2013 admin.php data admin.php <---- 書き込み権限を落とす somegrp somegrp somegrp somegrp 4096 520 4096 1020 1月 1月 1月 4月 28 28 28 28 18:25 18:24 18:26 18:27 2013 2013 2013 2013 <---- 他人がディレクトリに書き込み可能になってい <---- 他人がファイルに書き込み可能になっている data index.php lib admin.php System8 の実行方式に依存した設定や動作の修正 .php以外の拡張子のファイルをPHPスクリプトファイルとして認識させている .htaccess ファイルで .php とは異なる拡張子のファイルを php スクリプトとして実行させるように設定している場合動作しません。 動作しない設定例 # CGI ファイルや dhtml ファイルを PHP スクリプトとして実行する AddType application/x-httpd-php .cgi .dhtml 拡張子と fcgid-script ハンドラを関連付け、mod_fcgid ラッパースクリプトを通すように変更してください。 変更例 # CGI ファイルや dhtml ファイルを PHP スクリプトとして実行する AddHandler fcgid-script .cgi .dhtml .htaccess ファイルで php_value ディレクティブや php_flag ディレクティブを使っている php_value ディレクティブや php_flag ディレクティブは、System9で使うことはできません。 動作しない設定例 .htaccess php_flag magic_quotes_gpc Off php_value max_input_time "120" "<IfModule mod_php5.c>"と"</IfModule>"で囲った後 、".user.ini"ファイルを作成して、php.ini 書式で設定を記述してください。 (セクションは書かなくても動作します。将来的には意味を持つかも知れないため、書くことを推奨します) 変更例 .htaccess <IfModule mod_php5.c> php_flag magic_quotes_gpc Off php_value max_input_time "120" </IfModule> .user.ini [PHP] magic_quotes_gpc = Off max_input_time = "120" .user.ini は300秒に1回の頻度で再読込されます。すぐには反映されませんのでご注意ください。 PHP セッション機能 を使っている PHPスクリプトでPHPセッション機能を使っている場合、次のようなエラーがログに記録され、正常に動作しません。 PHP Warning: session_start(): open(/var/lib/php/session/sess_4rgohs4pfji1bq0vqgrp2mvr4sjlrjtm, O_RDWR) failed: Permission denied (13) in /home/WEB/<group>/<user>/public_html(_ssl)/<scriptname>.php on line <N> PHP Warning: Unknown: open(/var/lib/php/session/sess_4rgohs4pfji1bq0vqgrp2mvr4sjlrjtm, O_RDWR) failed: Permission denied (13) in Unknown on line 0 PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0 使っているかどうかわからない場合は、スクリプト内を"session_start" で検索してみてください。ヒットすれば使っています。 ホームディレクトリ以下に適当なディレクトリを作成して、PHP スクリプトで "session.save_path"を設定するか、 ドキュメントルートに".user.ini"ファイルを作成して、"session.save_path"を設定してください。 [PHP] .... session.save_path = "/home/<group>/<user>/<適当なディレクトリ名>"
© Copyright 2024 ExpyDoc