PHPスクリプト設置者のための豆知識
PHPは設置に際してPerl/CGIとは異なる性格を持ってます。 ここではサイト運営者向けに、PHPスクリプトを扱う上で知っておいた方が良い情報を書き留めてみます。
PHPスクリプトのメリット
設置者にとってPHPスクリプトを使うメリットは以下の2つでしょう
- Apacheモジュールによる高速動作
- 構文の容易さやデータベースとの親和性による高度な制御
Apacheモジュールによる高速動作
ここでは詳しい説明は省きますが、Apacheモジュールという仕組みはCGIという仕組みに比べて大変に速く起動し、サーバーへの負担が軽いです。
こと、レンタルサーバーという環境においてはこの仕組みで動かせるようになっているのはほぼPHPだけです。
Perl、Ruby、Pythonといった言語でもApacheモジュールで動作させることが可能なのですが、レンタルサーバーではそれで動作しているところはなかなかありません。
ただし、CGIとしてPHPが動作しているサーバーもあり、その場合はこのメリットはありません。
構文の容易さやデータベースとの親和性による高度な制御
PHPは標準関数が非常に多く、他の言語ではやっかいな処理を簡単な記述で制御できます。特にデータベース操作の容易さは随一で、高度な動作を書きやすいです。 つまり、より質の高いスクリプトを入手しやすい、というわけですね。
PHPスクリプトのデメリット
反対にデメリットですが、厄介な点が一つ、
- ある程度サーバーの設定を把握してなければならない
という点があります。
PHPはサーバーによって設定がかなり違います。 Apacheモジュール版かCGI版か、セーフモードか否か、MySQLは使えるか否か、などなど、スクリプトの要求している設定が満たされているかどうか把握できないと設置がうまくいかなかった時に迷宮にハマります。 Perlなどより設置に対する知識を要求されてしまうというのがデメリットです。
スクリプト設置の際の落とし穴
CGI版
CGI版とApacheモジュール版ではパーミッションの設定が違います。
Apacheモジュール版においてのPHPスクリプトは、604というパーミッションで動作します。
たいていはApacheモジュール版で動作することを期待して書かれていると思いますが、
CGI版の場合、実行されるPHPスクリプトのパーミッションを700(SuExecなしの場合は705)にすることで動作するようになるはずです。
また、SuExecが入っている場合、707と指定されたディレクトリは700(ブラウザから呼び出されるファイルが含まれている場合は705)にするのが良いです。
しかし根本的に、CGI版での動作をまったく考慮されていないスクリプトも存在します。そういった場合は制作者に問い合わせてみるのが結局近道になります。
サーバー側がCGI版で動かそうとするのはセキュリティのためです。 CGI版+SuExecがセキュリティ上は最も優れてます。 ただし、セーフモードなしのモジュール版でも、サーバーの設定やアクセス制限の設定が正しく行われていれば問題はありません。
セーフモード
セーフモードは機能制限を行うことにより、モジュール版のままできる限りセキュリティを上げようという設定です。 この機能制限に引っかかって動作に支障を来たすスクリプトも存在します。これが原因の場合も制作者に問い合わせてみましょう。
UTF-8のBOM
UTF-8という文字コードで書かれたスクリプトを編集保存する場合、エディタによってBOMが付加されることがあります。これが障害となることがありますので、編集する際はBOMを付加しないように保存(UTF-8Nなど)するのがベターです。
サーバー挿入広告
PHPが使える無料サーバーもちらほら見かけるようになってきましたが、自動挿入される広告が原因でうまく動作しないことがあります。 この場合は自動広告を切り、手動で広告を挿入する必要があります。手動広告への切り換えが可能な場合、方法はその業者のヘルプに載っていると思います。
PHP5
現在、レンタルサーバーのPHPで多数を占めているのはPHP4です。
PHP5は文法的にも機能的にも優れているのですが、完全上位互換ではなく、PHP4用のスクリプトが動かないことがあるため普及度が今ひとつです。
出回ってるPHPスクリプトもたいていPHP4用であり、PHP5のサーバーを借りた場合これがネックになることがあります。
ぼくの書いたスクリプトもPHP4ベースで書いてます。PHP5でも動くようにテストしてますが、万一動かなかった場合は即修正します。