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

ApachでCGI(Perlスクリプト使用)を動かすときに先頭の#!のPerlを動かす場所(?)を指定する行が無かった場合や、違う場合でも、Apachが勝手にperlの場所を解釈しスクリプトを実行してくれるようになるhttpd.confの設定方法ってありますか?

A 回答 (2件)

httpd.conf 自体でそれをやるのは無理だと思います。


例えば、私が業務で使用している開発環境は、3 つ異なるバージョンの perl が入っているのですが、先頭の #! (She-bang) が無いと、どのバージョンで動作させるのかすら設定出来ませんし、これは言ってしまえば拡張子で判別させる DOS 系 OS と異なり、UNIX 系での「カーネルに認識させるための記述」という、ひとつの「文化」であって、Apache がどうのこうのって事でもないです。
Win32 版の Apache を使ってたとしても、UNIX 文化に育まれた Apache には、その解決方法が無いかと思います。

Apache のソースコードを改編してコンパイルし、「自分専用の Apache を作る」か、mod_perl を組み込み、mod_perl の拡張モジュールを作れば、それも可能ですが…。
    • good
    • 0
この回答へのお礼

できないとなると、残念です。

ちなみに、いまやりたいことは・・・
自分のWebページを作っています。
CGI(Perl使用)の部分もあるので、ローカルで実際に動かしてからサーバにアップしています。
ローカルでの実行環境がApach(for win32)+ActivePerlで、サーバにアップするときにわざわざ#!部分を変更しなければなりません。それが少々めんどくさいので
質問したわけであります。
apachの変りにhttpd for win32 を使うと、#!の行が違っても実行できるので、Apachではできないかと思いまして。。。

お礼日時:2002/10/06 23:39

> CGI(Perl使用)の部分もあるので、ローカルで実際に動かしてからサーバにアップしています。


> ローカルでの実行環境がApach(for win32)+ActivePerlで、サーバにアップするときにわざわざ#!部分を変更しなければなりません。それが少々めんどくさいので
> 質問したわけであります。

発想の転換をしてみてください。
要するに「she-bang 書き換えが面倒くさい」だけなんですよね?

Apache に依存させるのではなく、ActivePerl を入れなおして、ディレクトリをあわせてみてはいかがでしょうか。
ActivePerl をインストールする際に、例えばサーバ側が
/usr/bin/perl
だった場合、
c:\usr
フォルダを作っておいて、インストール先を c:\usr にしておけば、perl インタプリタの実行ファイルが c:\usr\bin\perl.exe になります。
she-bang を #!c:\usr\bin\perl とすればいいのは勿論なんですが、Apache を介せば、UNIX 表記でも問題ないので、#!/usr/bin/perl と記述することが可能です。当然それなら、いちいち書き換えなくても、サーバ側でそのまま利用することが可能です。

コツとしては、perl のパスの bin ディレクトリの上位まで、Windows 上に作っておいて、インストール先として、そこまで指定します。

/usr/local/bin/perl としたい場合は、c:\usr\local フォルダを作っておいて、インストール先として c:\usr\local を指定すれば、自然と bin ディレクトリが作られ、その中に perl.exe がインストールされます。
で、CGI として使用したいファイルの先頭を
#!/usr/local/bin/perl とすれば、サーバでも Win 環境でも共用できる she-bang が書けますので、そういうことを気にしなくてもいいと思います。
私はかれこれ 3 年間、この方法を使ってます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
いい考えですね。感謝感謝です!
早速やってみます、ありがとうございました。

お礼日時:2002/10/07 01:47

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