• 締切済み

パーミッションについて

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

  • aja8
  • お礼率28% (11/39)
  • CGI
  • 回答数4
  • ありがとう数0

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答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です。

aja8
質問者

補足

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 . このような結果になりました. どうぞよろしくお願い致します.

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答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] という印のある行を何行か補足に貼り付けてください。

aja8
質問者

補足

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]

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答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 のオブジェクトを 作成している辺りだけでも良いです。

aja8
質問者

補足

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スクリプト作っても実行できないですよね. こういったエラーが出るのは何が原因でしょうか?大変恐縮です.

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

> C:/xampp/htdocs/work/template/test.txt test.txt というファイルは間違いなくここにあるのですか? ファイルのパーミッションというよりは、Apacheの設定のような気がしないでもないですが… もし上記のディレクトリに間違いなくおいているという話なら /cygdrive/c/xampp/htdocs/work/template/test.txt でやってみるとか。

aja8
質問者

補足

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

  • TOK2のパーミッションについて

    下記のサイトの左側の列にある「新規登録(無料)」を押すと、パーミッションに関するメッセージが出ます。 http://www.thera-garden.com/ 【以下、メッセージ】 あなたの設置したCGIは何らかのエラーのため動作しません。 あなたの設置したCGIのスクリプトを以下の注意点に沿ってチェックしてください。 1.パーミッションはあっていますか? TOK2では各ユーザーの権限でCGIが動作します。 CGIのパーミッションは700です。 CGIを設置するディレクトリーのパーミッションは701で動作します。 パーミッションについての詳しい説明をお読みください。 それ以外の場合はFTPソフトなどでCGIファイルのパーミッションを正しく設定してください。 2.CGIで使用されるファイルのパスはあっていますか? あなたのディレクトリー(フォルダ)のフルパスは /home/member/あなたのアカウント/です。 3.配布されているCGIを設置する場合 配布されているままの状態(改造をしない)で設置してみてください。 ここで、質問ですが、ただ単に、新規登録をしたいだけなのに、パーミッションに関する調整が必要なのでしょうか? 何が起きているのか、さっぱり分からないので、ぜひ教えて下さい。

  • レンタルサーバーlolipop cgiのパーミッションについて

    lolipopというレンタルサーバーを使っているのですが、パーミッションの設定が、cgiの取説と違っていて分かりません、、。 取説のパーミッションだとエラーが起きます。 ちなみに、lolipopが推奨するパーミッションは HTML・画像ファイル 604 (rw----r--) CGIの実行ファイル 700 (rwx------) CGIのデータファイル 600 (rw-------) .htaccessファイル 604 (rw----r--) ディレクトリ 705 (rwx---r-x) なのですが、 .pl などのファイルは何なのか さっぱりです。 私は、http://happy.honesto.net/cgi/ のサイトの FormMailerDX を作りたいのですが、 パーミッションの設定が分かりません。 お分かりになる方 教えてください。 FormMailerDXの取説は以下の通りです。 /fmdx/(755) | +--form.cgi(755)実行ファイル | +--sample.htm(644)フォームHTML | +--template.txt(666)メールテンプレートファイル | +--template2.txt(666)確認画面テンプレートファイル | +--jcode.pl(644)日本語コード変換ライブラリ | +--mimew.pl(644)MIMEエンコードライブラリ | +--/tsv/(777)TSVファイル作成ディレクトリ(空のディレクトリ) | +--/tmp/(777)添付ファイル一時保存ディレクトリ(空のディレクトリ) よろしくお願いします。

    • ベストアンサー
    • CGI
  • すごく基本的な事なのでしょうが・・わからないんです

    ある人のHPに行こうとすると、次のメッセージが でてきました。  どうすればいいのかわかりません。 どこでどの様な操作をすれば解決するのでしょうか? CGI Error The error was detected while processing this request. Be sure of followings: The CGI script does exist. The permission of CGI script is 755. The Perl path in CGI script is #!/bin/perl. CGIスクリプトの呼び出し中にエラーが発生しました。 下記の点をご確認ください。 ・CGIスクリプトが存在すること。 ・CGIスクリプトのパーミッションが755であること。 ・CGIスクリプトのperlのパスが#!/bin/perlであること。

    • ベストアンサー
    • CGI
  • パーミッションについて

    現在さくらのレンタルサーバを借りています。 CGIファイルとPLファイルなどCGIに関するものは パーミッションを700にしました。 1、手元のPCでは、ちゃんと動くのを確認しましたが、 本人以外がアクセスした場合、 動作しないという事はありえるでしょうか。 2、HTMLファイルは604に指定していますが、 なぜHTMLファイルは700ではないのでしょうか。 セキュリティに関するサイトでも、 HTMLファイルを700にしているのは見た事がありません。 初歩的な事ですがどなたかご教示をお願いします。

  • Xamppでperlが表示されない

    Linux初心者です。 ubuntu8にXamppインストールして、htdocsにtest.cgiを入れて、http://localhost/test.cgiにアクセスすると、 「Internal Server Error」がでます。 test.cgiの内容は 「 #!/usr/local/bin/perl 」 の一行のみです。 ちなみに、おなじhtdocsディレクトリにPHPのファイルを入れてテストしたところ正常に動作しました。 ご教示願います。

  • CGIのパーミッションについて

    昨日はじめて自鯖を立てようと思い apache2にて鯖を立てました。 こちらの環境は OS:windowsXP server:apache2 + ActivePerl CPU:Pen4 3.0Ghz メモリ:1024MB CGIの勉強をしたく、アップローダーを設置することに しました。http://sugachan.dip.jp/download/uploader.php こちらのサイトのSn Uploaderというものです。 Cgiの1列目#!のperlパスを自分の環境の #!C:/Perl/bin/perl に変更し ホームディレクトリ下のcgi-binフォルダ下に設置しました。 http://localhost/cgi-bin/upload.cgiにアクセスし 動作を確かめようとしたのですが500エラーがでてしま います。ためしに他のCGIを用意し試しましたところ きちんと動作しました。Apacheのほうの設定はすんでいます。いまのところパーミッションを疑っているのですが、Windowsの場合パーミッションの設定がいらないと聞いたことがあるのですがどうなんでしょうか? もし設定が必要な場合、自鯖にFFFTP等のソフトで繋いでパーミッションの変更を行うことはできるのでしょうか。自鯖にFTPサーバがないと無理なんでしょうかね? 初心者な質問で申し訳ないです。もしFFFTP以外の方法でパーミッションの変更方法があるのでしたら是非おしえてください。日本語がわかりにくいところがあると思いますが疑問な点がありましたら言ってください。よろしくお願いいたします。

    • 締切済み
    • CGI
  • Template-Toolkit の外部テンプレートについて

    perlの初心者です。HTMLテンプレートとして、cpanのTemplate-Toolkitを勉強している最中です。 ディレクトリ  /htdocs/   /lib/ttk.pl #CGIスクリプト   /tmpl/ttk.tpl #HTMLテンプレート(<body>以下)   /html/header #HTMLテンプレート(HTMLヘッダー) 上記の構成で、ttk.plを実行すると、ttk.tplからheaderを読み込み、HTMLを出力するプログラムを作成しているのですが、ttk.tplからheaderをincludeするとエラーが発生します。 ttk.tpl の冒頭に記述 [% INCLUDE ../html/header %]でエラーになります。 補足)/lib/内にheaderを持ってきて、 [% INCLUDE header %]とすれば成功はします。 おそらく、ディレクトリ指定の仕方が間違っていると思うのですが、../の場合の指定がわかりません。 マニュアルを見ても、../の場合の説明がありません。 http://www.hakoniwa.net/tt/ わかる方、ご指導いただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • メールフォームCGIの設置について

    下記のサイトのメールフォームCGIをさくらインターネットのサーバーで設置したいのですが、うまく作動せず送信できません。 前にロリポップサーバーで設置したところ、作動し送信も問題なくおこなえたのですが、パーミッションやそれぞれのファイルの中身までロリポップで設置したものとまったく同じファイル・条件でさくらインターネットのサーバーに設置したのですが「500 Internal Server Error」がでてしまい、送信できません。 CGIの提供先は下記になります。 http://pgd.jp/cgiscript.html さくらインターネットのパスなどは下記の通りです。 Perl:5.8.x perl:/usr/bin/perl sendmail:/usr/sbin/sendmai CGIの動作環境は下記の通りです。 Perl5 # /usr/sbin/sendmail が使えること # モジュール HTML::Template, Jcode が動作すること 色々試してはみたのですが、CGIやPerlの知識はほとんどありませんので結局何をやってもだめでした。 パーミッションの設定やファイルのアップロードは間違いなくできております。 よろしくお願い致します。

    • ベストアンサー
    • CGI
  • xamppでcgiが動かない

    Mac OS10.6.8でXAMPPをインストールした後 htdocs/test/というフォルダを作って http://test/ となるような環境を作りました。 httpd-vhosts.confファイルには <VirtualHost *:80> DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/test" ServerName test </VirtualHost> <Directory "/Applications/XAMPP/xamppfiles/htdocs/test"> Options Indexes FollowSymLinks MultiViews Includes ExecCGI AddType text/html .shtml .html AddHandler server-parsed .shtml .html AddHandler cgi-script .cgi .pl AllowOverride All Order allow,deny Allow from all </Directory> このように記述しております。 http://test/test.cgiにアクセスしたら Error message: Premature end of script headers: test.cgi このように言われてしまいました。 これは何が原因なのでしょうか? パスが間違っているのかな?と思ったのですが、XAMPPを使った場合 test.cgiファイルのパスはどうすればいいのでしょうか? よろしければ教えて下さい。 ※ とりあえず usr/bin/perl としました。

  • フォルダがパーミッションエラーになってしまいます。

    infoseekのファイルマネージャを使っているのですが、cgiを設置していた際、フォルダのパーミッションを変更しようとしたら、「パーミッションエラー」と表示されてしまいました。 その後、新規にフォルダを作成(cgi-binフォルダ内でない箇所にも)してみましたら、そのフォルダもパーミッションの変更をしようとしたらパーミッションエラーになってしまいました。 一般にパーミッションエラーとなる理由は何なのでしょうか・・・。 この状況から復帰する方法はあるでしょうか?宜しくお願い致します。

    • 締切済み
    • CGI

専門家に質問してみよう