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 を初期化でき...
-
#!/usr/bin/perlで書きだしたCG...
-
Excel VBAでリンク切れをチェッ...
-
use lib qw(変数名);は無理?
-
Excel VBA 定義されたプロージ...
-
VBAで旧字体を異字体に一括で変...
-
Excel VBA 『Call』で呼び出す...
-
VBAで別モジュールへの変数の受...
-
ユーザー定義関数に#NAME?が返...
-
"JScript"が見つかりません!
-
例外処理のフローチャートの記...
-
ベースモジュールって?
-
pythonのプログラミングについ...
-
エラー
-
erf(x)とerfc(x)のカタカナ読み...
-
他Book(シートモジュール)のマ...
-
YAMLについて
-
Net-SNMPのPerlモジュールでTra...
-
MySQLとの接続でfetchrow_array...
-
Access VBA標準モジュールにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「デバイスは PRN を初期化でき...
-
#!/usr/bin/perlで書きだしたCG...
-
perlの1行目が#!/usr/bin/perl...
-
Perlの実行パスを自動で変更す...
-
Image::Magickで画像に文字を埋...
-
「Perl Command Line InterPret...
-
use strictが効かない (PERL)
-
ActivePerlでWindows上のパスを...
-
さくらスタンダード perl make ...
-
perl構文チェックOKなのにC...
-
mt(MovableType.jp)インストー...
-
#!/usr/local/bin/perlで命令が...
-
「jcode.pl」というファイルは...
-
IIS+Activeperl データファイル...
-
perl環境を整えたいのですが、...
-
perlでdialogのフォルダ指定
-
#!/usr/bin/perl --でも不安定です
-
activeperlでDBD-Pgを扱うと、p...
-
mac perl 5.10 インストール
-
例外処理のフローチャートの記...
おすすめ情報