CGIを読み込もうとするとエラーが出ます。何が原因でしょうか?エラー内容を見る限りテンプレートファイルのパーミッションに問題があると思うのですが, 具体的にどうしたらエラーが解決されるでしょうか?
CGIのperlへのパスをcygwinのperlへのパスにしています.
ご存知な方, ご教授よろしくお願い致します.
エラー内容
HTML::Template : template file C:/xampp/htdocs/work/template/test.txt does not exist or is unreadable. at /usr/lib/perl5/site_perl/5.8/cygwin/HTML/Template.pm line 1615
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
どうも xamppのperlを呼び出しているような気がしますねえ。
すみませんが、以下のスクリプトを適当な名前の cgiファイルにして、
c:\xampp\htdocs\ においてブラウザから実行してください。
---ここから
#!ここのPerlのパスはお使いのものに合わせてください
print <<EOM;
content-type: text/text
EOM
print "version = $]\n";
print "OS = $^O\n";
print "EXECUTE_NAME = $^X\n";
$" = "\n";
print "\@INC=@INC\n";
---- ここまで
コマンドラインからも実行できて、こんな感じになります。
わたしの環境での ActivePerlの場合
c:\xampp\htdocs>perl test.cgi
content-type: text/text
version = 5.008008
OS = MSWin32
EXECUTE_NAME = c:\Perl\bin\perl.exe
@INC=c:/Perl/site/lib
c:/Perl/lib
.
xamppに入っていたPerl
D:\xampp\htdocs>..\perl\bin\perl.exe test.cgi
content-type: text/text
version = 5.008007
OS = MSWin32
EXECUTE_NAME = ..\perl\bin\perl.exe
@INC=
Cygwin版
content-type: text/text
version = 5.008007
OS = cygwin
EXECUTE_NAME = /usr/bin/perl.exe
@INC=/usr/lib/perl5/5.8/cygwin
/usr/lib/perl5/5.8
/usr/lib/perl5/site_perl/5.8/cygwin
/usr/lib/perl5/site_perl/5.8
/usr/lib/perl5/site_perl/5.8/cygwin
/usr/lib/perl5/site_perl/5.8
/usr/lib/perl5/vendor_perl/5.8/cygwin
/usr/lib/perl5/vendor_perl/5.8
/usr/lib/perl5/vendor_perl/5.8/cygwin
/usr/lib/perl5/vendor_perl/5.8
.
とりあえずはCGIでやったときの結果だけでOKです。
この回答への補足
sakusaker7様,
ご回答いただき誠にありがとうございます.
#!C:/cygwin/bin/perl
print <<EOM;
content-type: text/text
EOM
print "version = $]\n";
print "OS = $^O\n";
print "EXECUTE_NAME = $^X\n";
$" = "\n";
print "\@INC=@INC\n";
をプラウザでCGIにアクセスしたところ,
version = 5.008008
OS = cygwin
EXECUTE_NAME = /usr/bin/perl.exe
@INC=/usr/lib/perl5/5.8/cygwin
/usr/lib/perl5/5.8
/usr/lib/perl5/site_perl/5.8/cygwin
/usr/lib/perl5/site_perl/5.8
/usr/lib/perl5/site_perl/5.8
/usr/lib/perl5/vendor_perl/5.8/cygwin
/usr/lib/perl5/vendor_perl/5.8
/usr/lib/perl5/vendor_perl/5.8
.
このような結果になりました.
どうぞよろしくお願い致します.
No.3
- 回答日時:
XML云々ということで、ファイルそのものはブラウザから見えるようですね。
次にエラーの件ですが、500エラーなんてのは発生する理由はたくさんありますので
なぜおきるのかと云われても答えようがありません。
が、xamppのApacheのログに情報が残っているはずですので、
それを確認してください。
c:\xampp 以下にApacheやらPerlがあるのであれば、
c:\xampp\apache\logs にApacheのログがあります。
いくつかファイルがあると思いますが、その中に error.log という名前の
ファイルがあります。CGIを実行して500エラーになったらすぐにそのファイルの中身を確認してください。
[Sun Jan 27 00:31:04 2008] [notice] Apache/2.2.6 (Win32) DAV/2 mod_ssl/2.2.6 OpenSSL/0.9.8g mod_autoindex_color PHP/5.2.5 configured -- resuming normal operations
[Sun Jan 27 00:31:04 2008] [notice] Server built: Nov 7 2007 11:48:48
[Sun Jan 27 00:31:06 2008] [notice] Parent: Created child process 3672
[Sun Jan 27 00:31:23 2008] [notice] Child 3672: Child process is running
[Sun Jan 27 00:31:23 2008] [notice] Child 3672: Acquired the start mutex.
[Sun Jan 27 00:31:23 2008] [notice] Child 3672: Starting 250 worker threads.
[Sun Jan 27 00:31:24 2008] [notice] Child 3672: Starting thread to listen on port 443.
[Sun Jan 27 00:31:24 2008] [notice] Child 3672: Starting thread to listen on port 80.
[Sun Jan 27 00:34:24 2008] [error] [client 127.0.0.1] Premature end of script headers: test.cgi
[Sun Jan 27 00:34:24 2008] [error] [client 127.0.0.1] Can't find string terminator "EOM" anywhere before EOF at D:/xampp/htdocs/test.cgi line 2.\r
↑こんな感じのテキストファイルです。
ログファイルの後ろの方にある [error] という印のある行を何行か補足に貼り付けてください。
この回答への補足
sakusaker7様,
ご回答ありがとうございます.
貴重なアドバイスありがとうございます.
エラーログは以下のようになっていました.
[Sun Jan 27 02:07:26 2008] [error] [client 127.0.0.1] HTML::Template : template file test.tmpl does not exist or is unreadable. at /usr/lib/perl5/site_perl/5.8/cygwin/HTML/Template.pm line 1615
[Sun Jan 27 02:07:26 2008] [error] [client 127.0.0.1] \tHTML::Template::_mtime('HTML::Template=HASH(0x100fb5f8)', 'test.tmpl') called at /usr/lib/perl5/site_perl/5.8/cygwin/HTML/Template.pm line 1666
[Sun Jan 27 02:07:26 2008] [error] [client 127.0.0.1] \tHTML::Template::_init_template('HTML::Template=HASH(0x100fb5f8)') called at /usr/lib/perl5/site_perl/5.8/cygwin/HTML/Template.pm line 1238
[Sun Jan 27 02:07:26 2008] [error] [client 127.0.0.1] \tHTML::Template::_init('HTML::Template=HASH(0x100fb5f8)') called at /usr/lib/perl5/site_perl/5.8/cygwin/HTML/Template.pm line 1124
[Sun Jan 27 02:07:26 2008] [error] [client 127.0.0.1] \tHTML::Template::new('HTML::Template', 'filename', 'test.tmpl') called at C:/xampp/htdocs/work/test.cgi line 5
[Sun Jan 27 02:07:26 2008] [error] [client 127.0.0.1]
No.2
- 回答日時:
ちょっと状況を確認させてください。
まず
xampp環境が動いている状態でブラウザのアドレス欄に
http://127.0.0.1/work/template/test.txt
と入力して移動すると、質問者さんが作った test.txt の内容が
表示されますか? それとも何らかのエラーになりますか?
次にHTML::Template の synopsis にあるサンプルは動きますか?
具体的には、
C:/xampp/htdocs/work/template/
に、
<html>
<head><title>Test Template</title>
<body>
My Home Directory is <TMPL_VAR NAME=HOME>
<p>
My Path is set to <TMPL_VAR NAME=PATH>
</body>
</html>
という内容の、test.tmpl という名前のファイルと
#/usr/bin/perl -w
use HTML::Template;
# open the html template
my $template = HTML::Template->new(filename => 'test.tmpl');
# fill in some parameters
$template->param(HOME => $ENV{HOME});
$template->param(PATH => $ENV{PATH});
# send the obligatory Content-Type and print the template output
print "Content-Type: text/html\n\n", $template->output;
という名前の test.cgi というファイル
#最初の #! の行はお使いの環境に合わせて修正してください
を置き、
ブラウザのアドレス欄に
http://127.0.0.1/work/template/test.cgi
と入力して移動したときに正しく実行されますか?
以上二点のチェックで何もエラーにならないというのであれば、
実行しようとしているcgiファイルの内容を見せてもらえますか?
もしファイルのサイズが大きいようなら、HTML::Template のオブジェクトを
作成している辺りだけでも良いです。
この回答への補足
sakusaker7様,
ご丁寧にご回答ありがとうございます.
感謝です.
>xampp環境が動いている状態でブラウザのアドレス欄に
>http://127.0.0.1/work/template/test.txt
>と入力して移動すると、質問者さんが作った test.txt の内容が
>表示されますか? それとも何らかのエラーになりますか?
>XML ページを表示できません
>スタイル シートを使用した XML 入力は表示できません。エラーを訂>正してください。 [更新] ボタンをクリックするか、または後でやり>直してください。
というエラーが表示されてしまいました.
>ブラウザのアドレス欄に
>http://127.0.0.1/work/template/test.cgi
>と入力して移動したときに正しく実行されますか?
Server Error!
エラー500というエラーが出てしまいました.
やはり見事に正常に実行できませんでした・・・
まずこのCGIを実行できないようではperlスクリプト作っても実行できないですよね.
こういったエラーが出るのは何が原因でしょうか?大変恐縮です.
No.1
- 回答日時:
> C:/xampp/htdocs/work/template/test.txt
test.txt というファイルは間違いなくここにあるのですか?
ファイルのパーミッションというよりは、Apacheの設定のような気がしないでもないですが…
もし上記のディレクトリに間違いなくおいているという話なら
/cygdrive/c/xampp/htdocs/work/template/test.txt
でやってみるとか。
この回答への補足
sakusaker7様,
お世話様です.ご回答ありがとうございます.
>test.txt というファイルは間違いなくここにあるのですか?
間違いなくあります.
>もし上記のディレクトリに間違いなくおいているという話なら
>/cygdrive/c/xampp/htdocs/work/template/test.txt
>でやってみるとか。
C:/xampp/htdocs/work/template/移動後, pwdコマンドを実行したら
/cygdrive/c/xampp/htdocs/work/template/にtest.txtはあります.
>ファイルのパーミッションというよりは、Apacheの設定のような気が>
>しないでもないですが…
全くっていっていいほど初心者でわからないので環境設定など何か具体的にアドバイスいただけないでしょうか?よろしくお願い致します.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース Vue+Laravelのデザインテンプレートのサンプルが起動できない 1 2022/05/18 21:52
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CGI初心者です。設置したいので...
-
CGI設置時に500エラーになります
-
急にCGIが動作しなくなった。
-
EXCELファイルに誰がアクセスし...
-
URLに~/cgi-bin/~を隠す方法
-
《エクセルVBA》「他の人が該当...
-
これらの2つの違いを教えて下...
-
IISでエラー、Apachでは動くの...
-
スタイルシートをアップしたい
-
<img src=
-
Apacheをlocalhostで動かしてい...
-
Movable Type 5 個人無償ライセ...
-
オンラインブックマーク
-
cgiファイルがダウンロードでき...
-
異なるディレクトリからライブ...
-
コード表記
-
CGIでjcode.plを読み込めなくな...
-
CGI用、空っぽのindex.htmlの中身
-
サーバ上のロックディレクトリ...
-
何故か特定のディレクトリで画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
古ーくからフリーのtree.cgi掲...
-
プロバイダで定められたPerlへ...
-
-T(汚染モード)でメールが送れ...
-
#!/usr/bin/perl --
-
コアサーバー(coreserver)でのc...
-
■sendmail送信失敗
-
Can't locate R.pm in @INC
-
CGIのEncodeエラーについて
-
BBSの設置について
-
1日の売上表を作りたいのですけ...
-
windowsでperlの1行目を無視す...
-
cgiファイルのパス指定について
-
sendmailの-fオプション記述
-
ファイルの削除について ( unli...
-
急にCGIが動作しなくなった。
-
Apache2でSetEnvが動作しない。
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
URLに~/cgi-bin/~を隠す方法
-
VBAでサーバーにアクセスするに...
おすすめ情報