nDiki : CGI プログラムが動かない

CGI プログラムが動かない

UNIXOS 上の Apache での場合の経験的チェックポイント

1. プログラムは正しく動くものか?

  1. プログラムに実行権限があるか?
  2. スクリプトならば、shebang (#!) が正しく設定されているか?
    • 正しくインタプリタを指定しているか?
    • 改行コードは LF になっているか? (環境によっては CRLF だと、#! の末尾の CRもインタプリタ名の一部として認識されてしまう)
  3. スクリプトに文法エラーはないか?
    • Perl スクリプトなら perl -c スクリプトファイル名 するとどうなるか? (必要ならば perl はフルパスで指定)
  4. コンソールから実行して動くか?
    • 環境の関係でコンソールから実行してもうまく動かないスクリプトもあるので、ここで動かなくても必ずしも問題とはいえないが、文法エラー等があればひっかかる可能性が高い。
  5. 正しい HTTP ヘッダを出力している?

2. CGI プログラムのあるディレクトリで、CGI を許可するように Apache を設定してあるか?

Apache の全体設定あるいは、.htaccess での設定は正しいか?

  1. そのディレクトリは ScriptAlias ディレクティブで指定されたディレクトリか? あるいは Options ディレクティブで +ExecCGI されているか?
    • .htaccess で Options ディレクティブを使う場合、メインの設定ファイルの中の当該 <directory>ディレクティブ内の AllowOverride で Options の上書きが許可されているか?
  2. AddHandler や SetHandler ディレクティブによって cgi-script ハンドラが可能になっている?
    • .htaccess で これらのディレクティブを使う場合、メインの設定ファイルの中の当該 <directory>ディレクティブ内の AllowOverride で FileInfo の上書きが許可されているか?

(参考: CGI による動的コンテンツ)

3. suEXEC のチェックにひっかかっていないか?

  1. suexec.log に何か警告が出ていないか?
    • directory is writable by others: と出ていればディレクトリが、グループ書き込み権限やその他のユーザにより書き込み可能になっている。(→ http://httpd.apache.org/.../suexec.html ) CGI プログラムのあるディレクトリおよび、そのディレクトリへのパスの途中の各ディレクトリの権限を確認する。
    • target uid/gid (aaaa/bbbb) mismatch with directory (cccc/dddd) or program (eeee/ffff) と出ていれば uid / gid が正しくない (aaaa、bbbb、cccc、dddd は数字列)。

スポンサード リンク

no diary

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.200473s / load averages: 0.76, 0.70, 0.58
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker