- ベストアンサー
RedHat Linux9のWebサーバーでのPerlの設定
RedHat Linux9でWebサーバーをつくり公開しています。 今度、Perlを使ってCGIプログラムもアップしたいと思っています。しかし、RedHat Linux9でのPerlの設定が分かりません。私の持っている本ではPHPの設定なら載っていたのですが、Perlは載っていません。WEB上で設定方法を探して見たのですが見つかりませんでした。 どなたかPerlの設定方法を教えて下さい。 あと、RedHat Linux9ならPerlは標準で入っていますよね。。どこを見れば分かるのでしょうか。。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
ほぼゴールが近いので,これで最後にします. > もう、万策尽きましたでしょうか。。 いいえ.何がおこったかは予想がつきます. 私がこれまでに挙げたチェック項目を再度すべて確認してください. ヒント: dos2unixで状態が変化しました.再度あることを行う必要があります
その他の回答 (8)
- astronaut
- ベストアンサー率58% (303/516)
この際ですから,man を使うことを覚えてください. $ man rpm > CGI works Good.のcgiプログラムを動かしてみましたが、 > 先程と同じ状態でした。。 改行コードは大丈夫ですか? cat -v test.cgi とやって,行末に ^M がついてるようならアウト.dos2unixしましょう.
補足
別のPCで、同じLinuxをインストールしているものがあり、httpd.confをいじってなかったので、そこからフロッピーでコピーしてきてしまいました。。(^^; 同じことですよね。。 cat -v test.cgi とやったら、^M が一杯、でてきました。ですので、test.cgiがあるカレントディレクトリで、 dos2unix test.cgi とやってみました。(入力としては$はいらないんですよね。。) すると、^Mがなくなりました。 しかし、WEB上で、 http://www.homepage.co.jp/cgi/web_form/test.cgi とやりましたが、前回と同じエラー表示でした。 もう、万策尽きましたでしょうか。。
- astronaut
- ベストアンサー率58% (303/516)
すみません.#6のスクリプトに誤植ありです. #!/usr/bin/perl print<<EOF; Content-type: text/html <HTML><BODY>CGI works Good.</BODY></HTML> EOF
- astronaut
- ベストアンサー率58% (303/516)
OSの再インストールは不要です. httpd.confを元に戻せばいいだけだし,うっかりバックアップしてないということなら,最悪でもhttpdのみ再インストールすればいい. /var/www/cgi-bin 以下なら,httpd.confはいじらなくていいというのはすでに書いたとおり. これは十中八九,スクリプト側の問題ですね. いきなり大きなCGIを動かそうとしてるみたいですが,普通は,問題の切り分けのために,簡単なテストスクリプトを動かしてみるものです. httpd.confを編集前の状態に戻して,httpdを再起動したあと, ------------------------- #/usr/bin/perl print<<EOF Content-type: text/html <HTML><BODY>CGI works Good.</BODY></HTML> EOF ------------------------- という簡単なスクリプトを /ver/www/cgi-bin/ に置いて,chmod 755 して,一応 perl -c で文法チェックして,OKならブラウザでアクセスしてみてください.うまく動けば設定には問題ありません. > Premature end of script headers このエラーは改行コードがおかしいときに良くでます. $ dos2unix webform.cgi とやって,改行コードを変換してみてください. それから,これがどこかで配布されているCGIなら,設置方法についてのドキュメントがあるはずです. 関連ファイルの配置やパーミション設定に問題が無いか,良く確かめてください.
お礼
できました。test.cgiはあくまでテストですものね。 (^^; 何度もご回答を頂き、ありがとうございました。 皆さんもありがとうございました!!
補足
ありがとうございます。httpd.confを元に戻そうとしたのですが、バックアップを取らなかったので、httpdを再インストールしようと思います。 しかし、 rpm -ihv httpd-2.0.40-21.i386.rpm rpm -ihv indexhtml-9-3.noach.rpm とやったのですが、インストールされています、というような画面がでていて、 取り合えず処理できるのですが、ファイルが変更されていません。 上書きインストールってどうやるんでしょうか。。 ちなみに、今の状態で、CGI works Good.のcgiプログラムを動かしてみましたが、 先程と同じ状態でした。。
もし、いろいろいじっていて、それが動作しない原因であればRHL9を再インストールされてはどうでしょうか? うちの場合、インストールして、No.2 の 手順でhttpd.confを書き換え、lokkit で www(Port80)をあけて、終わりです。それでユーザディレクトリにて動いています。 もちろんフォルダやファイルのパーミッション設定はいりますけどね。
- Marionette
- ベストアンサー率56% (42/74)
perlの設定につては理解されたのでしょうか? mod_perl(apacheのモジュール)を使用する場合には、 LoadModule mod_perl /usr/libexec/apache/mod_perl.so AddModule mod_perl.c としていしますが、 CGIとして使うなら(つまりコマンドライン版perlを使う場合には)設定は不要です。 最近は、LoadModule指示子の代わりに /etc/httpd/conf.d/perl.confで指定するようです。 何を記述するのかはわかりません。 記述内容まで触れているのはみあたりませんでしたが、'perl.conf'で検索すれば 何件かヒットします。
- astronaut
- ベストアンサー率58% (303/516)
「perlで書かれたCGIを利用したい」ということは理解できました. CGIスクリプトを /var/www/cgi-bin/ 以下に置けば,何一つ設定をいじらずとも, http://hogehoge/cgi-bin/harehore.cgi で,CGIが動作するはずです. 違うことをおやりになりたいのならば,この質問では情報ゼロです.最低でも以下の情報を書いてください. ・CGIを置いたディレクトリ ・ブラウザに入力したURL ・エラーメッセージの正確な内容
補足
・CGIを置いたディレクトリ /var/www/cgi-bin/ ・ブラウザに入力したURL http://www.homepage.co.jp/cgi-bin/toi_form/webform.cgi ・エラーメッセージの正確な内容 Server error! The server encountered an internal error and was unable to complete your request. Error message: Premature end of script headers: webform.cgi If you think this is a server error, please contact the webmaster Error 500 www.homepage.co.jp Thu Aug 21 16:04:19 2003 Apache/2.0.40 (Red Hat Linux)
CGIが動かないというのであれば、、、 /etc/httpd/conf/httpd.conf に対して。。。 まず、Optionsに ExecCGI Includes 追加します。 <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch ExecCGI Includes <Limit GET POST OPTIONS> Order allow,deny </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> で、、、下をアンコメントします。 AddHandler cgi-script .cgi AddHandler send-as-is asis AddHandler type-map var AddOutputFilter INCLUDES .shtml
補足
ありがとうございます!! 上記の処理をしてみました。最後に、/etc/rc.d/init.d/httpd reload も実行して、再読み込みもしました。 しかし、まだ動かないですーー。 ちなみに、 <Limit GET POST OPTIONS> Order allow,deny </Limit> となっていましたが、 <Limit GET POST OPTIONS> Order allow,deny Allow form all </Limit> でいいんですよね。
- astronaut
- ベストアンサー率58% (303/516)
Perlの設定とは,どういう意味なのかわかりませんが,インストールされているかどうかは, rpm -q perl でわかります. ちなみに,インストールパスは,/usr/bin/perl です.
補足
ありがとうございました。 Perl-5.8.0.88 でした。 でも、Perlの設定がまだできません。 Perlの設定というのは、回答No.2の人のようなことです。
お礼
cat test.cgi | nkf -Se (シフトJISをEUCに変換) というのもやってみましたがだめでした。。
補足
ほぼゴールが近いのでしょうか? dos2nuixについて調べてみました。 dos2unixは、MS-DOS形式のテキストファイルをUNIX形式にする。つまり、dos2unix.pl 文字コード(漢字コード)をEUCへ,改行コード(行末コード)を\nへ変換する。 とありました。 前回の時にdos2unix < DOS_FILE >UNIX_FILE と実行したのでUNIX形式に変わった訳ですよね。 でも、WEBを表示すると、エラーになってしまいましたが。 >再度あることを行う必要があります とありましたが、それは何でしょうか。。 ちょっと分からないのですが。。教えて頂けると有り難いです。