No.2ベストアンサー
- 回答日時:
"c:/Program Files"ということは,Windows OSで ActivePerlあたりを使っているということでしょうか。
Windowsであるなら基本的にshebang行は無視して,PATH環境変数を参照することで実行プログラム perl.exe を探しに行くんじゃないですか。1行目が "#!/usr/bin/perl" のままだとWindowsでは実行できなかったというのは確認した事実ですか?
shebangとは
http://www2.u-netsurf.ne.jp/~alt/mt/archives/200 …
Windows版Apacheでshebang行を無視する設定
http://www.310f.com/exocet/hiki/
jjon-comさん。回答ありがとうございます。
Apache2なので、shebang行は無視されないようですが、
> Windows版Apacheでshebang行を無視する設定
> http://www.310f.com/exocet/hiki/
を参考に、他にも調べてみて、できるようになりました!
以下のように、httpd.confに、ScriptInterpreterSource Registry-Strictを追加しました。
------------------------------------------------------
<Directory "D:/www/public_html">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
ScriptInterpreterSource Registry-Strict
</Directory>
------------------------------------------------------
それから、下の内容のxxx.regファイル作って、実行して、.cgiにperl.exeを関連付けました。
------------------------------------------------------
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command]
@="D:\\perl\\bin\\perl.exe %1"
------------------------------------------------------
(OSがvistaで、レジストリエディタのバージョンを見たら6だったんですが、"Version 5.00"という記述でないと追加できませんでした。それと、perlをDドライブ直下にインストールし直しました。)
本当にありがとうございました!
No.4
- 回答日時:
あ、実行するのは index.cgi にしてください。
この場合はパーミッションの変更(実行権限を与える)の必要があるのは
index.cgi のみです。
main.cgi は require で読み込んでいるだけですのでパーミッションの
変更は不要になります。
一式をサーバにアップした後に編集や更新するのは main.cgi のみで
済みます。
サーバ側は
#!/usr/bin/perl
として、ローカル側は
#!c:/Program Files/Perl/bin/perl
とすればいいでしょう。
名前などは適宜読み替えてください。
(CGIファイルが複数ある場合も)
ところでPerlをスペースを含むパスにインストールするのは誤動作の
原因になるような気が。
(デフォルトは C:/Perl/bin/perl.exe になるはずですが...)
pick52さん。回答ありがとうございます。
No.2のjjon-comさんから頂いた回答で解決できました。
でも、今後のために勉強になりました。
Perlもパスにスペースを含まないようDドライブ直下にインストールし直しました。
ありがとうございました。
No.3
- 回答日時:
例えば index.cgi というファイルを作成し中身は
#!/usr/bin/perl
require 'main.cgi';
1;
として、本体を main.cgi に記述すれば index.cgi は編集しなくても
済みます。
(本体スクリプトの最後行で 1; を忘れないように)
なお、通常のWinサーバではPerlパスは特に指定しなくても
環境変数PATHに設定しパスが通してあってサーバ側でも正常に設定して
いれば動作しますがApacheサーバの場合は正確に指定しないと
パーミッションエラーがでる場合があるようですね。
(Apache以外のサーバでは問題なく動作する場合が多いと思います)
サーバ(IISなど)によってはCGIの実行ディレクトリ(ファイルのある
ディレクトリ)がカレントディレクトリにならない場合があります。
その場合は仮想パスを指定してやるか、絶対パスで指定するか
main.cgi を呼び出す前にカレントディレクトリを変更してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- Perl perlについて 2 2022/11/18 19:38
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- Perl perlプログラミング 空白行削除 4 2023/01/28 17:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「デバイスは PRN を初期化でき...
-
ActivePerlでWindows上のパスを...
-
例外処理のフローチャートの記...
-
'Range'メソッドは失敗しました
-
本当にPublicな変数(配列で)
-
標準モジュールを削除したい。(...
-
グラフのX,Y座標を取得したい
-
ユーザー定義関数に#NAME?が返...
-
LCD ディスプレイを Raspberry ...
-
印刷後メッセージボックスを表...
-
pythonのプログラミングについ...
-
Excelで時刻になったら知らせて...
-
偶数/奇数の判定
-
"JScript"が見つかりません!
-
実行中のcpan processを終了さ...
-
Form間の値の渡し方
-
msgboxの表示
-
Excel VBAでリンク切れをチェッ...
-
Perl メールフォーム複数のアド...
-
VBAで別モジュールへの変数の受...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「デバイスは PRN を初期化でき...
-
「Perl Command Line InterPret...
-
windows環境でのperlのパス
-
perlの1行目が#!/usr/bin/perl...
-
環境と言語のダブル?クロス開...
-
use strictが効かない (PERL)
-
ApacheがPerlを作動してくれな...
-
@のエスケープ
-
Perl5.8とPerl5.6は共存可能で...
-
#!/usr/local/bin/perlで命令が...
-
Perlの実行パスを自動で変更す...
-
Image::Magickで画像に文字を埋...
-
perl が 実行できない
-
bad interpreter:エラーについて
-
mac perl 5.10 インストール
-
「jcode.pl」というファイルは...
-
#!/usr/bin/perl --でも不安定です
-
activeperlでDBD-Pgを扱うと、p...
-
【超初心者】異なるディレクト...
-
perl初心者です。
おすすめ情報