プロが教える店舗&オフィスのセキュリティ対策術

RedHat Linux9でWebサーバーをつくり公開しています。
今度、Perlを使ってCGIプログラムもアップしたいと思っています。しかし、RedHat Linux9でのPerlの設定が分かりません。私の持っている本ではPHPの設定なら載っていたのですが、Perlは載っていません。WEB上で設定方法を探して見たのですが見つかりませんでした。
どなたかPerlの設定方法を教えて下さい。
あと、RedHat Linux9ならPerlは標準で入っていますよね。。どこを見れば分かるのでしょうか。。

A 回答 (9件)

Perlの設定とは,どういう意味なのかわかりませんが,インストールされているかどうかは,



rpm -q perl

でわかります.
ちなみに,インストールパスは,/usr/bin/perl です.

この回答への補足

ありがとうございました。
Perl-5.8.0.88 でした。
でも、Perlの設定がまだできません。
Perlの設定というのは、回答No.2の人のようなことです。

補足日時:2003/08/21 14:03
    • good
    • 0

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>
でいいんですよね。

補足日時:2003/08/21 14:03
    • good
    • 0

「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/webfo …

・エラーメッセージの正確な内容
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)

補足日時:2003/08/21 16:22
    • good
    • 0

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'で検索すれば
何件かヒットします。
    • good
    • 0

もし、いろいろいじっていて、それが動作しない原因であればRHL9を再インストールされてはどうでしょうか?



うちの場合、インストールして、No.2 の 手順でhttpd.confを書き換え、lokkit で www(Port80)をあけて、終わりです。それでユーザディレクトリにて動いています。

もちろんフォルダやファイルのパーミッション設定はいりますけどね。
    • good
    • 0

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なら,設置方法についてのドキュメントがあるはずです.
関連ファイルの配置やパーミション設定に問題が無いか,良く確かめてください.

この回答への補足

ありがとうございます。httpd.confを元に戻そうとしたのですが、バックアップを取らなかったので、httpdを再インストールしようと思います。
しかし、
rpm -ihv httpd-2.0.40-21.i386.rpm

rpm -ihv indexhtml-9-3.noach.rpm

とやったのですが、インストールされています、というような画面がでていて、
取り合えず処理できるのですが、ファイルが変更されていません。
上書きインストールってどうやるんでしょうか。。

ちなみに、今の状態で、CGI works Good.のcgiプログラムを動かしてみましたが、
先程と同じ状態でした。。

補足日時:2003/08/22 13:06
    • good
    • 0
この回答へのお礼

できました。test.cgiはあくまでテストですものね。
(^^;
何度もご回答を頂き、ありがとうございました。
皆さんもありがとうございました!!

お礼日時:2003/08/26 17:03

すみません.#6のスクリプトに誤植ありです.



#!/usr/bin/perl

print<<EOF;
Content-type: text/html

<HTML><BODY>CGI works Good.</BODY></HTML>
EOF
    • good
    • 0

この際ですから,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
とやりましたが、前回と同じエラー表示でした。
もう、万策尽きましたでしょうか。。

補足日時:2003/08/22 16:33
    • good
    • 0

ほぼゴールが近いので,これで最後にします.



> もう、万策尽きましたでしょうか。。

いいえ.何がおこったかは予想がつきます.
私がこれまでに挙げたチェック項目を再度すべて確認してください.

ヒント:
dos2unixで状態が変化しました.再度あることを行う必要があります

この回答への補足

ほぼゴールが近いのでしょうか?

dos2nuixについて調べてみました。
dos2unixは、MS-DOS形式のテキストファイルをUNIX形式にする。つまり、dos2unix.pl 文字コード(漢字コード)をEUCへ,改行コード(行末コード)を\nへ変換する。
とありました。

前回の時にdos2unix < DOS_FILE >UNIX_FILE
と実行したのでUNIX形式に変わった訳ですよね。
でも、WEBを表示すると、エラーになってしまいましたが。

>再度あることを行う必要があります
とありましたが、それは何でしょうか。。
ちょっと分からないのですが。。教えて頂けると有り難いです。

補足日時:2003/08/25 10:52
    • good
    • 0
この回答へのお礼

cat test.cgi | nkf -Se

(シフトJISをEUCに変換)

というのもやってみましたがだめでした。。

お礼日時:2003/08/25 11:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!