• ベストアンサー

これを実行するとエラーが起こります どうしてですか

#! /usr/local/bin/perl5 $fname="./maru.dat" open(FH,"+<$fname"); flock(FH,2); chomp($kazu=<FH>); $kazu++; seek FH,0,0; print FH "$kazu\n"; close(FH); exit; これを実行するたびに maru.datの中の数が1つ増えるようにしたいのです そこで同じ階層のところに count.cgiとして 上のような記述をして 実行をしたのですが internalerrorが起こってしまうのです どこがおかしいのか教えて下さい

  • CGI
  • 回答数4
  • ありがとう数0

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

  • ベストアンサー
  • kalze
  • ベストアンサー率47% (522/1092)
回答No.4

Internal Server Errorですよね? 1であるperlへのパスの間違いは起きますが? 一般の方(CGIの設置で)の最も多いinternal Server Errorの原因はこのパスの間違いです。 2についてはOSにもよるので。 サーバのOSはなんですか? 実行環境を教えてください。

その他の回答 (3)

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.3

うちのDebianで問題なく動きましたよ。 一行目は #/usr/bin/perl 2行目の最後に;をつけましたが。

  • khurata
  • ベストアンサー率40% (54/134)
回答No.2

 CGI として動かすのではなく、まずコンソールから Perlスクリプトとして動かす事でデバッグしてみてはどうでしょう?  我ながら直接役立つアドバイスとは思えませんが、Internal Server Errorしか出ない CGI デバッグよりも、ずっとマシなデバッグが出来ると思います。

  • kalze
  • ベストアンサー率47% (522/1092)
回答No.1

とりあえずぱっと見て考えられる理由です 1.perlへのパスが間違っている 2.改行コードがおかしい 3.$fname="./maru.dat"にセミコロンがない 4."./maru.dat"がない。書き込み権限がない とりあえずこの辺チェックしてみてください。

mmmmmm00
質問者

補足

1.internal・・・・・というエラーなので   それはないと思います 2.改行コード?   何を見ればよいですか? 3.つけましたがだめでした 4.あります 若干変更して実行すると maru.dat内の「0」が1にならずに 変なものに変わっていました ????です

関連するQ&A

  • flockについて

    ファイルを読み書きする場合に使用するflockですが、closeする前に別ファイルのflockは使用できるのでしょうか? テストしてみたところ、うまくいってるような気もするのですが、確証が持てないので質問させていただきました。 例) $file1="file1.txt"; $file2="file2.txt"; open(OUT,"+<$file") flock(OUT,2); $count1=<OUT>; open(DAT,"<$file2") flock(DAT,1); $count2=<DAT>; close DAT; $count=$count1+$count2; truncate(OUT,0); seek(OUT,0,0); print OUT "$count "; close OUT; ちょっとあえて複雑な書き方としてみましたが、上記のようにflockを使ってる最中に別ファイルのflockを使用することは出来ますでしょうか? 参考URLでも結構ですので、どなたかよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 文字列をカウントするにはどうすればいいのでしょうか?

    ファイル読み込み後その中の特定の文字列、「映画」の個数をカウントするというプログラムを次のように作ってみましたが、実際に起動してみるとエラーになります。何かわかる方がいれば教えてください。 #!/usr/local/bin/perl if (open(FH, "data/log.txt")) { @file = <FH>; close(FH); } foreach $count (@file){ $count = ($line =~ tr/映画/映画/); } print $count; exit;

    • ベストアンサー
    • CGI
  • このように書くとエラーが出ます

    昨日も同じような質問をしました どうかお許し下さい 若干変更を加え このようにしたのですが kino.txtは確かに実行するたびに1つ大きな数になります しかし 表示されるのは エラー表示・・・・・・ どうしてですか? #!/usr/bin/perl $kinoko='./kino.txt'; open DATA ,"+<$kinoko"; $mokko=<DATA>; $mokko++; seek(DATA, 0, 0); print DATA $mokko; close DATA; print <<"EPO"; <html> <body bgcolor="cream"> <font size="7"> $mokkoです </font> </body> </html> EPO exit;

    • 締切済み
    • CGI
  • system関数で呼びだした、cshファイル周辺でのエラー

    2~3日前にも質問させていただいた、Perl初心者leeeeeeeeです。先日に引き続き、前の業者が作ったPerlプログラムを、新しいサーバ上で動くようにする作業を行っているのですが、まだエラーが出ており困っています。以下が問題の部分です。 ○○.cgi # 削除シェルの実行 $rtn = system"$rm_csh $tmp_file $limit_date $touch_file"; if($rtn != 0) {  # エラーログ出力  cm_errlog(__FILE__, "LOG013", ($rm_csh." ".$limit_date));  # エラーHTML出力  省略  # 異常終了  exit 1; } ここの、$rtnが、0になっていないようで、エラーページが表示されてしまいます。 ちなみに、$rm_csh は、tmpdel.cshというファイルで、以下が中身です。 ■ tmpdel.csh #!/usr/bin/csh set touch_fname = $3 set tmp_file = $1 touch -t $2 $touch_fname >& /dev/null set STS = $status if( $STS != 0) then exit 1 endif foreach file_name (`ls $tmp_file*`)  test $file_name -ot $touch_fname && rm $file_name >& /dev/null end exit 0 ■ tmpdel.csh の #!/usr/bin/csh という部分が気になって、#!/usr/bin/perlとか、 #!/bin/cshにもしてみましたが動きませんでした。 何が原因でエラーが出ているのかが分かりません。 宜しくお願いします。

  • シェルコマンドでphpを実行したい!

     さくらインターネットでcron設定を使って月末になると起動するphpを読み込もうとしたいのですが、どうやっても上手くいきません。 いろいろと参考になるサイトはあるのですが、動かない理由がわからないのでどなたか教えてください。  まず、cron設定で設定しているシェルのファイルが置いてあるパスに間違いはありません。  次にシェルファイルに書いてあるコードは以下です。 #!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin cd /home/自分のID/www/自分で作ったフォルダ/; ./自分で作ったフォルダ/phpファイル という風に書いてあります。 ところが、時間になるとこれが実行されず、 サーバーよりエラーメールが届きます。 [not found]と一言。 …最初、シェルファイルの階層が間違っているかと思ったのですが、 どう見てもあってますし…中身が問題なのかなぁ、と考えます。 何かわかれば、是非教えてください。 お願いします。

    • ベストアンサー
    • PHP
  • ページ訪問時の個別カウントについて

    こんばんは,いつもお世話になっております. Webサイトへのアクセスカウンターを作ってみました. 人がページへ訪問→+1してcount.datに加算→同ページに数値を表示というプロセスです. count.cgi ----------------------------------------- #! usr/bin/perl use CGI::Carp qw(fatalsToBrowser); open(FILE, "+<./count.dat") or die("ERROR"); eval{ flock(FILE, 2); }; $count = <FILE>; #カウントファイルの書き込み seek(FILE, 0, 0); print FILE ++$count; close(FILE); #サーバー出力 print qq[Content-type: text/html\n\n]; print qq[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">]; print qq[<html>]; print qq[<head><title></title></head>]; print qq[<body>]; print qq[$count]; print qq[</body>]; print qq[</html>]; ----------------------------------------- 非常に簡易的なものなのですが,この数値を個人のIPなど,無二の値を用いて識別し,count.datに保存することは可能でしょうか? もちろん個人情報なので出力については考慮したいと思っております. 何か不明な点がございましたら随時対応しますので,よろしくお願い致します.

  • phpで引き算が上手くいかない

    データの引き算で書き出す際に予期しない数字になってしまって 困っております。 data.datに10となっていた際に、下記のコードを実行すると90になってします。本当は9にしたいのですが、どこに原因があるのかわからずにおります。 どなたかご教授ください。 宜しくお願いいたします。 $fp = fopen("data.dat","r+"); $registry_count = fgets($fp,1024); if($registry_count != "0"){ $registry_count--; } flock($fp,LOCK_EX); fseek($fp,0); fputs($fp,$registry_count); flock($fp,LOCK_UN); fclose($fp);

    • ベストアンサー
    • PHP
  • テキストカウンターのエラー 詳しい方教えて!!

    ttp://up.kabubu.net/cgi/img2/15270.zip これがソースですフレーム分割してテキストカウンターを表示させるやつです 一週間でマスターするCGI for Macintoshについてきたものです 本通りにやってもできません ローカルのアパッチでも試しましたが webサーバーだと500エラーがでました 本にはサポートページもありませんでした 一応ソースのせます #!/usr/bin/perl open(COUNT, "+<countdata") || die "File 'countdata' Open Error."; flock(COUNT,2); $counter = <COUNT>; $counter_new = $counter + 1; seek(COUNT, 0, 0); print COUNT "$counter_new?n"; close(COUNT); flock(COUNT,8); print "Content-type: text/html?n?n"; print << "END_OF_HTML"; <HTML> <BODY> <CENTER> <FONT size="6"><B> ようこそ<BR> あなたは<FONT color="red"> $counter_new </FONT>人目のお客様です </B></FONT> </CENTER> </BODY> </HTML> END_OF_HTML ソースミスを指摘してもらいましたが 自分でやるとエラーがでるので どなたかエラーがでないようにソースを直して下さい あとパーミッションも御願いします 本にのってた通りのパーミッションでは ファイル countdataは606 counter.cgiは705 main.htmlは404 index.htmlは404 briage.gifは404 となっております ディレクトリの名前はcounterです パーミッションは755 ソースエラーを指摘されましたが難しいのでどなたか動作確認できてから書き直して載せて下さい御願いします

    • ベストアンサー
    • CGI
  • CGIで外部のPHPを実行するには?

    ルートにあるCGIから例えばphpフォルダにあるsample.phpを実行するには、 下記のような感じで良いのでしょうか? **********************************  #!/usr/bin/perl  print "Content-type: text/html\n\n";  print "sample.phpの実行\n<br>";  system 'php/sample.php';  exit; ********************************** 宜しくお願い致します。

    • 締切済み
    • CGI
  • 手打ちしたコードがエラーになってしまう現象

    こんにちは。 ActivePerlの参考書を使っています。 会社ではSolarisにApacheがあるので、普段から使用しているWindowsで 参考書のコードを手打ちで作り、それを(tera termで)viエディター上に貼り付けして、ファイルを 作成実行しているのですが、手打ちしたコードと参考書のコードでは、 同じ内容&シンタックスエラーもでないのに、ブラウザで確認しようとすると サーバーエラー(500)が出てしまいます。 それで、参考書に添付されているサンプルコードを(内容自体はいじりません)、 上記の方法でUnix機にアップして実行すると上手く表示されます。 diffコマンドで比較してもカンマの位置とか、見やすい様にスペースを入れている、 コメントの描写が異なっているだけなのですが、どうしてこんな現象があるのでしょう?? 文字コードが原因だと睨んでいるのですが、このような現象はありえますでしょうか?? 以下に手打ちしたコードを載せて置きます。 (アクセスカウンターを表示) ----------------------------------------------- #!/usr/local/bin/perl $COUNTFILE='./count.dat'; open(FILE, "+<$COUNTFILE") or die("Err"); eval{ flock(FILE, 2); }; $cnt = <FILE>; seek(FILE,0,0); print FILE ++$cnt; close(FILE); print <<EOF; Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head><title>あくせすかうんと</title></head> <body> <p>あなたは……$cnt番目の訪問者です。</p> </body></html> EOF ------------------------------------------------ よろしくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう