共有webサーバでperl, php, python等を提供する場合の設定

断片部に書いてた(放置してた)メモにphpのこと追記して整理。

CGIapache + suexecで

  • suexecが基本
  • suexecしていないと、cgiapache起動ユーザで動作する
    • セッションとか他人のファイルに不用意にアクセスできる
  • configureで--enable-suexec
  • cgiファイル、ディレクトリにuser以外の書き込み権限がある場合はInternal Server Errorになる
  • mod_phpは対象外(apache DSOモジュールなのでcgiじゃないから当然)
    • mod_phpphpapache起動ユーザなので危険っちゃあ危険

phpcgi

  • cgi化させるだけなら簡単
    • configure時にcgi版バイナリを作成して、先頭にshebangを書いて実行権限つけさせればいい
    • AddHandler cgi-script .cgi .php
  • でもネットで出回ってるphpソースコードってモジュール前提に作られてること多くね?
    • 先頭にshebang書いてないの多い (phpあんまし使わないから気のせいかもしれないけど)
    • phppgadminとかphppgadminとか
    • つまり、shebangの追加が必須になると、他の環境から移行しにくい
  • 目標: モジュール版のソースにshebangの追加、ファイルに実行権限付加をしなくても動く環境
  • 個人的にはmod_suphpのほうが良いかな?