- ベストアンサー
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
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> 「英語のCGI」だと全く問題ないということが判明しました。 では,改行コードの問題じゃないですね. 変なところに2バイト文字が紛れ込んだりしてませんか? 特に,空白など,見落としがちだと思います. perl -c で,文法チェックするとどうなりますか? サーバーでの直接実行の結果は?
その他の回答 (3)
ScriptAlias /cgi-bin/ "/home/www/cgi-bin/" となっていますが、、、 ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" に戻して、同じエラーがでるかです。 ユーザーディレクトリの場合でも /home/*/public_html を /home/*/abc/public_html の様に デフォルトから動かすと エラーになる場合があ ります。 suExecが絡んでいるようです。 外しているかもしれませんが。。
- astronaut
- ベストアンサー率58% (303/516)
そのスクリプトをサーバー上で実行してみて, bad interpreter というエラーが出るようなら,スクリプトの改行コードがおかしいのだと思います. Dos/Windows から ftp 転送する場合は,ASCII モードで転送しましょう. サーバー上で dos2unix コマンドで変換しても良いです.
お礼
とりあえずffftpのASCIIモードで上げてみましたが、今だ変化が見えずです・・・うーむ 一体何が・・・でも原因はastronautさんが言うように各行の改行コードがくさい気がしてきました。 情報ありがとうございます
- kusukusu
- ベストアンサー率38% (141/363)
Perlへのパスが間違っているのかもしれません。 /usr/local/bin/perl で試してみてください。
お礼
whereis perl で検索したところ /usr/bin/perl でしたので、これはOKのようでした・・・
お礼
こんにちは。おっしゃるようにオリジナル?に戻して試してみましたが、同じでした。 その後、ネットではいずりまわって情報を集め、いろいろやったところ「英語のCGI」だと全く問題ないということが判明しました。ということは、改行コードか何かの問題だと思うのです。 ASCIIモード、EUC関連、FTPソフトでいろいろ試してみたのですが、ダメでした。 \n とかそのあたりがくさいのかな・・・