Windows環境でPerlのパスについて

このQ&Aのポイント
  • Windows環境でPerlのパスを設定する方法について調べています。ActivePerlを使用しているため、#!/usr/bin/perlではなく、#dev/perl/bin/perlを使用する必要があります。しかし、ジャンクション機能を使用する場合には500エラーが発生します。他の方法はないか調査中です。
  • Windows環境でPerlの開発を行っていますが、perlスクリプトの第1行目にどのような記述をすべきか悩んでいます。ActivePerlを使用しているため、#dev/perl/bin/perlの記述が必要ですが、ジャンクションを設定した場合には500エラーが発生します。他の開発者の方々はどのように対策しているのでしょうか。
  • Windows環境でPerlのパスについて調査中です。ActivePerlを利用しているため、perlスクリプトの第1行目には#dev/perl/bin/perlを記述する必要がありますが、ジャンクションを使った場合には500エラーが発生してしまいます。他の解決策はないか検討中です。
回答を見る
  • ベストアンサー

windows環境でのperlのパス

以下の環境で開発をしています。 OS: windows XP ActivePerl 5.8.8 apache 2.0.64 レンタルサーバで利用しやすいようにperlスクリプトの第1行目に #!/usr/bin/perl を記述していますが、ActivePerl のありどころが C:\dev\perl\bin\なので第1行目を #!/dev/perl/bin/perl  にしなければなりません。 #!/usr/bin/perlの記述をそのまま使う為に巷でよく言われているようなwindowsのジャンクション機能を利用しています。 Cドライブ直下に「usr」ホルダを作り、ここにC:\dev\perl\bin\のジャンクションを設定しました。 するとC:\usr\を覗くとbin\が存在します。つまりC:\dev\perl\bin\はC:\usr\bin\でアクセスできるようになります。 しかしこの状態で#!/usr/bin/perlの記述をそのまま使うと500エラーが出ます。 これ以外に何か良い方法はございませんでしょうか? また同じような開発環境の皆様はperlスクリプトの第1行目をどのように対策されていますでしょうか? 宜しく御教授お願いいたします。

  • Perl
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
  • koba0626
  • ベストアンサー率67% (19/28)
回答No.2

C:\dev\perl\bin\ だけのジャンクションを作成したのが失敗だと思います。 C:\dev\perl\Site やC:\dev\perl\lib など他に色々とフォルダがあり、基本のpmなどはそこから読み込むので。 リソキのlinkd.exeを使っているなら、 > linkd C:\usr C:\dev\perl とやるべきじゃないですかね。

osama_vin_ladin
質問者

補足

ありがとうございます。 おっしゃる通りにC:\dev\perl\bin\と同列のフォルダをとりあえず全てジャンクション設定したら問題解決しました。 しかし正確な仕組みが理解できていません。 モジュールなんかは\siteや\libから検索するのはわかっていますが、これはperl.exeが探しに行くんですよね?違うかな? ジャンクション設定はapacheにperlのありかを明示するために必要な設定であって モジュールなんかはC:\dev\perl\bin\perl.exe自身が C:\dev\perl\bin\siteとかに  apacheを介さずに直接探しにいくので、ジャンクション設定は関係ないと思っているのですが、私の理解はどこが間違っていますでしょうか? 教えていただければ嬉しいです。

その他の回答 (2)

  • koba0626
  • ベストアンサー率67% (19/28)
回答No.3

#2です。 >モジュールなんかはC:\dev\perl\bin\perl.exe自身が >C:\dev\perl\bin\siteとかに  >apacheを介さずに直接探しにいくので、ジャンクション設定は関係ないと思っているのですが、私の理解はどこが間違っていますでしょうか? >教えていただければ嬉しいです。 残念ならが不正解です。 config.plを見てみるとよいでしょう。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

3年前のQ&Aがいまでもヒントになるようならどうぞ。 http://okwave.jp/qa/q4323948.html の私の過去の回答ANo.2 へのお礼

osama_vin_ladin
質問者

補足

レジストリをいじるのは後で問題があった時、解決させる自信がないので今回は見合わせます。しかしながら参考になりました。 回答ありがとうございました。

関連するQ&A

  • windows環境でのapacheのsymlink

    以下の環境で開発をしています。 OS: windows XP ActivePerl 5.8.8 apache 2.0.64 perlスクリプトの第1行目に #!/usr/bin/perl を記述していますが、ActivePerl のありどころが C:\dev\perl\bin\なので第1行目を #!/dev/perl/bin/perl  にしなければなりません。 #!/usr/bin/perlの記述をそのまま使う為に巷でよく言われているようなwindowsのジャンクション機能を利用しています。 Cドライブ直下に「usr」ホルダを作り、ここにC:\dev\perl\bin\のジャンクションを設定しました。 するとC:\usr\を覗くとbin\が存在します。つまりC:\dev\perl\bin\はC:\usr\bin\でアクセスできるようになります。 しかしこの状態で#!/usr/bin/perlの記述をそのまま使うと500エラーが出ます。 apacheのhttpd.confには <Directory /> Options FollowSymLinks </Directory> を記述してあります。 その他に何か設定が必要でしょうか? 宜しく御教授お願いいたします。

  • ActivePerlで#!/usr/bin/が無効

    WindowsXPにActivePerl(5.16.3.1603)をインストールして、 コマンドラインに「perl script.scr」と入力して スクリプトファイルは実行できるのですが、 スクリプトファイルの1行目に「#!/usr/bin/perl」を記述して、 コマンドラインに「script.scr」と入力して実行しようとすると、 「C:\・・・\script.scrは有効なWin32アプリケーションではありません。」 というメッセージが表示されて正しく実行できません。 perl.exeのあるフォルダをC:\usr\binフォルダにして、 1行目を #!/usr/bin/perl #!C:/usr/bin/perl #!C:\usr\bin\perl などいろいろ試してみましたが、どれも 前述のメッセージが表示されて実行できませんでした。 コマンドラインに「script.scr」と入力するだけで 実行することができるようにするには どのようにすればいいのでしょうか。 script.scrの拡張子scrをplなどに変更して この拡張子のファイルに対してperl.exeに関連付けることにより script.plだけでも実行できるようにはなりますが 拡張子.scrではこの関連付けができませんので #!/usr/bin/perl等を使用する方法で解決したいです。 ジャンクションとかApacheなどが全く分かりませんので これらを使わずに簡単にできる方法がありましたら教えてください。 (なお使っても分かりやすい手順があれば可です) よろしくお願いします。

    • ベストアンサー
    • Perl
  • perlパス

    Windows2000機でWebServerを建てたのですが、CGIが認識しません。 WEBサーバーのクライアントソフトはApacheで 普通にHTMLは見れています。 perlをインストールした場所は C:\usr\local で VerはActivePerl 5.8.8.822 for Windows (x86)です。 場所は↑なのでCGIファイルのperlのパスはそのままいじらず、 perlのパスは#!/usr/local/bin/perl です。 一応#!C:/~以下   もやりましたがだめで、 CGIのテキストが表示されています。 色々調べてやったのですがどうもうまくいかず 教えていただけませんか

  • 環境と言語のダブル?クロス開発(Linux,Windows : Perl, Ruby)

    LinuxとWindowsのクロス環境の開発でPerlとRubyも両方動かしております。 Linuxでは /usr/bin/perl /usr/bin/ruby にそれぞれ存在していますが、 Windowsでは、PerlとRubyを同じ C:\usr\binにインストールするとかなり危険?(dllや同じ 他の名前のファイルがある場合)に困るので、 ソースは同じ #!/usr/bin/rubyで動作させたく、Windowsでも動かすにはどうすればよいのでしょうか? Windows側でのRubyはとりあえず C:\Rubyに入れて居ますが、 c:\usr\binにruby.exeをコピーすれば動きます。 しかし、安直で邪道のような気がするですが、今後何か不具合でも出ないか心配です。 何か妙案はあるのでしょうか?

    • ベストアンサー
    • Perl
  • CGIのパス(Apache winで)

    初歩的な質問ですみません。 環境 windows2000 サーバー Apache/1.3.20 ActivePerl-5.6.1.626 をインストールが完了して、CGIを動作させようとしています。 ApacheでのHTML動作はできています。 CGIプログラムの一行目に #!/usr/local/bin/perl と記載されています。 その文字列を #!c:/bin/perl.exe に変更して現在動作させています。 しかし、ISPのHPスペースのperlへのパスは #!/usr/local/bin/perl なので、転送前に一行目を変更しています。 変更しなくても良いように ApacheでのCGIのパスを #!/usr/local/bin/perl で動作する方法を どなたか教えていただけないでしょうか? ちなみに Perlは[c:\bin]にインストールしてあります。 Apacheは[g:\apache]にインストールしてあります。

  • windowsでperlの1行目を無視する。

    CGI(perl)の1行目である、#!/usr/bin/perlを読み飛ばす設定をしたいと思います。 httpd.confで ScriptInterpreterSource registry としました。 さらにレジストリで拡張子の関連付けが必要なようなのですが、それの具体的な方法がわかりません。 ご教授お願いします。 やりたい事は、ローカルとサーバーのperlのパスがことなるため、1行目を変更するのがめんどうでそれを改善したいのです。 現在は、c:\usr\bin\perl にperlをインストールして回避していますが・・・ 環境 windows2000 apache1.3.29 perl

    • ベストアンサー
    • CGI
  • Perlのパス

    レンタルサーバーのCGIの説明で、「1.perl のパスは、/usr/bin/perl です。2.プログラムの先頭の記述は必ず、#!/usr/bin/perl となります。」って書いてあるんですけど、これを使用する場合、 http://www.kent-web.com/data/cart.html たぶん、admin.cgi , cart.cgi , order.cgi を エディタ で開いて以下の箇所をあたまの部分、#!/usr/bin/perl を変えればいいんですかね?それで1.の/usr/bin/perl は何処に書くのかな?それとも説明 の前置きですかね?「1.perl のパスは、」という意味はリンクがこうなるよ!って意味ですかね? ただま、KENT WEBみながら苦戦してます。 シロウトですいません。

    • ベストアンサー
    • Perl
  • Perlの実行パスを自動で変更する方法はありませんか?

    Perlで1行目に書く実行パスを自動で変更することはできないでしょうか? 例えば、自分のPCで動かす場合は、 #!c:/Program Files/Perl/bin/perl を有効にし、 ソースをそのままサーバにアップしたら、 #!/usr/bin/perl に切り替わるような記述法があれば、教えて頂けないでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • 1行目、Perlの宣言

    ActivePerlをC:\Perlにインストールしました。するとperl.exeはC:\Perl\bin\perlにありました。 そこでCGIファイルの1行目に   #! C:/Perl/bin/perl としましたが、実行してみるとコードがそのまま表示されてしまいます。 「Perl」と大文字を含むからかと「P」を小文字に変えてみたり、あるいは「/」を「\」にしてみたりと試しましたが、やはり機能しません。 httpd.confは教科書に書いてある通りに書き換えました。 何が原因でCGIがまともに動かないのでしょう。 OSはWindows Vista、Apacheは2.0.54、ActivePerlは5.8.7.813です。

    • ベストアンサー
    • CGI
  • perlの1行目が#!/usr/bin/perlだと動かず#!/usr

    perlの1行目が#!/usr/bin/perlだと動かず#!/usr/bin/perl5.8.9だと動くのですが、 #!/usr/bin/perlで動くようにするにはどうしたらいいのでしょうか? インストールされているperlは This is perl, v5.8.9 built for darwin-2level です。 どこかでパスの設定をしてやればいいと思うのですが、 どこに何を書けばいいのかよくわかりません。 環境はMacOsX v10.6 SnowLeopardです。 どなたかよろしくお願いいたします。

    • ベストアンサー
    • Perl

専門家に質問してみよう