トップページ
フリーCGIの配布
CGIカスタマイズ
CGI制作
ご利用規定
PHP設置について
著作権・リンク
お問い合せ
 
 
1.
PHPはCGIか?
(2003/12/20)
2.
WEBサーバについて
(2004/01/15)
3.
パーミッションの設定
(2004/01/29)
4.
htaccessの設置
(2004/01/29)
5.
phpinfo()の項目
(2004/02/19)
6.
session.use_trance_sid
 
7.
CGI版での認証とグローバル変数
 
8.
スタイルシートCSSによるレイアウトの変更
 
9.
編集用のテキストエディタ
 
10.
.動作環境について
 



【 PHPはCGIか? 】

 PHP(HyperText Preprocessor)はWEB用に開発されたスクリプト言語で、HTMLファイル内にプログラムを記述し、サーバーサイドで動作します。モジュール版の場合は、perlのように外部CGIを呼び出すプロセスがないため処理が軽く、またCGIとしてでなくApacheのモジュールとして動作することで処理が高速になります。WEBサーバーでの動作にCGI版とモジュール版の違いがあるため、PHPで作られたページが一概にCGIとは呼べるわけではありません。(当サイトでは閲覧者の混乱を避けるために全てCGIという表記をしています。)
  『CGI』とはWEBアプリケーションのことだと思っている方もいるようですが、実際にはWEBサーバーが外部プログラムを呼び出すしくみのことをいいます。
(2003/12/20) ▲TOP


【 WEBサーバについて 】

 PHPで作成されたファイルを動かすには、ご利用のサーバでPHPの使用が可能である必要があります。PHPは前述したようにモジュール版とCGI版があり、CGI版の場合ではサーバによってはプログラムファイルの拡張子を.cgiにしてPHPのパスを各ファイルに記入する必要がある場合があります。またCGI版の場合でsuEXECが動作している場合はデータファイルやフォルダのパーミッションを所有者のみ権限で実行可能のためセキュリティを高めることができます。サーバーでsuEXECが動作していたとしてもモジュール版の場合では有効になりません、よってモジュール版の場合は.datや.logなどのデータファイルを第三者からの閲覧できないようにするために.htaccessの設置が可能であれば設置することが望ましいでしょう。
 PHPで作成されたプログラムはCGI版でもモジュール版でも動きますが、セーフモードで制限されている場合はサーバー内でファイルの作成や削除ができないため、実行できるプログラムが大幅に限定されてしまいます。セーフモードで制限されたサーバでPHPを使用することは大きな障害となってしまうでしょう。

 CGI版とモジュール版とではどっちがいいのかと一概に言えません。。モジュール版のPHPのほうが実行の負荷が低く速度も速いので魅力的ですが、suEXECの動作しているサーバでのCGI版は設置やセキュリティの面でとてもいいです。経験上でいえばCGI版でも大きなプログラムでない限り遅いとは感じません。結局はサーバの回線速度やクライアントの回線速度に依存している部分が大きいと思います。
 利用しているサーバーのPHPの動作確認とその環境を調べるために <?php phpinfo() ?> を記入したPHPファイル(例:info.php)をサーバー上の任意の場所へ設置し表示させてください。phpinfoの見方については別の章で説明します。
(2004/01/15) ▲TOP


【 パーミッションの設定 】

◆ 1.パーミッションの設定は設置するファイルの種類と用途によって以下のように設定します。

・拡張子が .php .css .js [644] アスキーモード
・拡張子が .dat [644] or [666] アスキーモード
・拡張子が .gif .jpeg .jpg [644] バイナリモード
・フォルダ [755] or [777]  


サーバー内のグループからの閲覧を拒否するために[606][604][705][707]に設定することをお薦めします。
※サーバーによってはこのグループ権限を無くす(0にする)と動作しない場合があります。 逆にグループ権限を無くさないと動作しない場合もあります。

◆ 2.CGI版のPHPでsuEXECが動作しているサーバーの場合上記の設定では動きません。
以下のパーミッションに変更してください。 [666] → [600]

[644] → [604] or [600]
[755] → [700] or [701]
[777] → [705] or [700] or [701]

※suEXECが動作していない環境の場合はログファイル(*.dat *.log)を見られないように、フォルダ内に.htaccess
 設置してください。
(2004/01/29) ▲TOP


【 .htaccessの設置 】

 CGIで読み書きされるログファイルなどは、ブラウザから直接ファイルをアクセスすることで見ることができてしまいます。これを防止するための方法のひとつとして.htaccessの設置があります。.htaccessはサーバー内に設置することでファイルやフォルダに対するアクセスの制限をかけることができます。設置された.htaccessの内容はフォルダとその下層フォルダ内で有効になります。さらに下層フォルダへ.htaccessを設置し制限を追加することができます。

◆.htaccessの作成と設置
テキストエディタを使用して以下の様記入することで拡張子が.dat、.logのファイルと.htaccessを見れないようにします。ファイル名を.htaccessとして保存し、サーバーへ設置してください。(ファイル名はサーバーへ設置後に変更しても結構です)

<Files ~ "\.dat$">
  deny from all
</Files>
<Files ~ "\.log$">
  deny from all
</Files>
<Files ~ "^\.htaccess$">
  deny from all
</Files>
※サーバによってはこの.htaccessの設置を制限されている場合があります。
(2004/01/29) ▲TOP


【 phpinfo()の項目 】

phpの環境を確認するには <?php phpinfo() ?> を記入したPHPファイル(例:info.php)をサーバへ設置しアクセスします。

Server API
 PHPのCGI版とモジュール版については「PHPはCGI」で既に述べましたが、この項目を確認して「CGI」と記されている場合はCGI版です。モジュール版であれば「Apache」と記されている事と思います。CGI版でもモジュール版でも同じようにスクリプトは動作しますが、CGI版である場合はサーバ環境に合わせたパーミッションでなければ動作しないので注意が必要です。
 CGI版の場合ではHTTP認証で使うグローバル変数($PHP_AUTH_USER、 $PHP_AUTH_PW)が使えないので、管理画面へアクセスする場合に、パスワード入力のダイアログが表示されるBASIC認証を利用しているスクリプトは使えません。複数の管理ファイルへ1度の認証でアクセスを繰返し行う場合に以前はHTTP認証を使っていましたが、環境によっては動作しないので、今ではほとんどの場合にセッションによる認証で制作しています。他にもクッキーを利用したり、HTML内のフォーム内での取り回しなどがありますが、使うことは少ないです。
session.use_trans_sid
 セッションはクライアントのクッキーが有効な場合は、その情報をクッキーに保存し、クッキーが無効である場合はサーバ内へ保存されます。サーバへ保存される場合はセッション情報をURLに付加して送る必要があります。このクッキーの有効・無効に対して自動でURLの書き換えを行うか否かの設定がsession.use_trans_sidです。デフォルトでは有効(On 又は 1 )になっているので、有効を前提にスクリプト作っています。

つづく...
(2004/02/19) ▲TOP
 

TOP△
トップページフリーCGICGIカスタマイズCGI制作利用規約お問い合せ