• ベストアンサー

CGIが使えないのはなぜ?

こんにちは。 現在Redhat8を使用して、サーバーを作っています。apacheを起動してサイトが表示できるまではOKだったのですが、CGIを使う段階でつまづいています。 httpd.confは様々なサイトを見てそのとおりに編集したのですが、いざCGIを起動するとServerError!となります。Error_logを見ると↓のような妙な文章でした。Permissionなら分かるのですが、、これは何でしょう。 Premature end of script headers: XXX.cgi CGIの先頭のPerl指定は #!/usr/bin/perl にしてあります。何が悪いのか分からず途方にくれています。何かチェックする部分があればどうかご指摘ください。お願いします。パーミッションの設定は完了しており、CGIスクリプト自体も先頭以外はいじっていません。 RedHat8.0 Apache2.0 /home/www/html にHTMLファイル /home/www/cgi-bin にCGIスクリプト ----------------以下関係のありそうなhttpd.confの抜粋 ScriptAlias /cgi-bin/ "/home/www/cgi-bin/" <Directory /home/www/cgi-bin> Options ExecCGI Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi

質問者が選んだベストアンサー

  • ベストアンサー
  • astronaut
  • ベストアンサー率58% (303/516)
回答No.4

> 「英語のCGI」だと全く問題ないということが判明しました。 では,改行コードの問題じゃないですね. 変なところに2バイト文字が紛れ込んだりしてませんか? 特に,空白など,見落としがちだと思います. perl -c で,文法チェックするとどうなりますか? サーバーでの直接実行の結果は?

その他の回答 (3)

noname#27115
noname#27115
回答No.3

ScriptAlias /cgi-bin/ "/home/www/cgi-bin/" となっていますが、、、 ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" に戻して、同じエラーがでるかです。 ユーザーディレクトリの場合でも /home/*/public_html を /home/*/abc/public_html の様に デフォルトから動かすと エラーになる場合があ ります。 suExecが絡んでいるようです。 外しているかもしれませんが。。

ToshiJP
質問者

お礼

こんにちは。おっしゃるようにオリジナル?に戻して試してみましたが、同じでした。 その後、ネットではいずりまわって情報を集め、いろいろやったところ「英語のCGI」だと全く問題ないということが判明しました。ということは、改行コードか何かの問題だと思うのです。 ASCIIモード、EUC関連、FTPソフトでいろいろ試してみたのですが、ダメでした。 \n とかそのあたりがくさいのかな・・・

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.2

そのスクリプトをサーバー上で実行してみて, bad interpreter というエラーが出るようなら,スクリプトの改行コードがおかしいのだと思います. Dos/Windows から ftp 転送する場合は,ASCII モードで転送しましょう. サーバー上で dos2unix コマンドで変換しても良いです.

ToshiJP
質問者

お礼

とりあえずffftpのASCIIモードで上げてみましたが、今だ変化が見えずです・・・うーむ 一体何が・・・でも原因はastronautさんが言うように各行の改行コードがくさい気がしてきました。  情報ありがとうございます

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

Perlへのパスが間違っているのかもしれません。 /usr/local/bin/perl で試してみてください。

ToshiJP
質問者

お礼

whereis perl で検索したところ /usr/bin/perl でしたので、これはOKのようでした・・・

関連するQ&A