CGIが動かない “Internal Server Error” “Premature end of script headers”
- 2007.10.14
- Webマスター
あるサイトにperlで書かれたCGIをのせてみると、動かない!
色々と工夫してみるものの、
“Internal Server Error” がブラウザに表示され、Apacheのログには、
“Premature end of script headers”
エラーが記録されている。
知り合いの、さらに知り合いのサイトで、サーバの情報は得られない。大塚商会さんのサーバということしか分からない。
■.htaccessはダメだった
.htaccessを設置して Options +ExecCGI を指定したが、ダメ。
■ディレクトリのアクセス権限の変更
結局、今回設置するCGIのディレクトリのアクセス権を変更する事で、無事に解決した。
utf-mailというディレクトリのアクセス権を以下のように変更した。
(修正前)
drwxrxxr-x utf-mail
(修正後)
drwxr-xr-x utf-mail
755や700だと、大丈夫だった。オーナー以外が書き込み権限を持てる775と777は許可されていないらしい。
このサーバー、どうもsuexecの設定を有効にしているみたい。
参考サイト:
http://httpd.apache.org/docs/2.0/ja/howto/cgi.html
■テスト用CGIプログラム
テストに使用した簡単なCGI。
test.cgi
#! /usr/bin/perl print "Content-type:text/html\n\n"; print "test";
ポイントは、 1行目のパスを/usr/bin/perlか/usr/local/bin/perlなど、環境に合わせる。
次のポイントは、Content-typeを含み、後に空行の続くHTTPヘッダ を吐き出すこと。
755を指定するのを忘れずに。(場合によっては700)
-
前の記事
SiteTracker8 ログのインポートに時間がかかる 2007.10.11
-
次の記事
Apple Final Cut Pro 16:9のビデオ HDV 1080i を取り込んで編集する 2007.10.22