"Premature end of script headers" on Apache

何回か引っかかったのでメモル。

パスが違う
shebang 行と 実際のパスを確認する。
$ which perl
/opt/bin/perl
$ head -1 test.cgi
#!/usr/bin/perl
プログラムへのアクセスが認められていない
実行ファイル、または、それまでのパスを ls -l で確認し、chown や chmod で設定変更する。
$ which perl
/home/foo/opt/bin/perl
$ ls -l /home
合計 40
drwx------   10 foo      foo          4096  8月  9 13:54 foo/
...
$ chgrp www /home/foo
$ chmod 710 /home/foo
$ ls -l /home
合計 40
drwx--x---   10 foo      www          4096  8月  9 13:54 foo/
...
改行コードがおかしい
スクリプトファイルが正しい文字コード・改行か確認し、変換する
改行コードの誤認識
"--" を shebang 行の末尾につける
#!/usr/bin/perl --