• 締切済み

mod_perlでopen失敗

cgiをapacheのモジュールで動作するようにしました。 open(IN,'>a.txt'); こちらは成功しますが、 open(OUT,'>a.txt'); こちらが成功しなくなりました。 パーミッションの確認やsuexecのログなどを見ましたが原因が分かりませんでした。 2chで下記の情報を見つけたので、僕以外にも同じことになったケースがあるみたいでした。 知っている方がいらっしゃいましたらどうしたらよいか教えて下さい。 351 :ログ補完 :04/03/29 13:16 ID:??? 351 名前: nobodyさん :sage 投稿日: 04/03/25 (木) 17:44 ID:??? もしかしてApache::Registryだとopen FH, >hoge.dat でファイルを作ってくれなくなった?

みんなの回答

  • kome-maro
  • ベストアンサー率20% (29/145)
回答No.1

書き込みを行うディレクトリに実行権限を与えていますか? ディレクトリに実行権限がないと、書き込み権限だけでは、ファイルは吐けません。 もちろん読み込みはできますけどね。

関連するQ&A

  • suEXECとパーミッションの関係がわかりません

    ホームページ作成初心者です。 (A) suEXECについて http://www.aconus.com/~oyaji/www/apache_linux_suexec.htm では、 ----------------------- なお、CGI 関係以外のファイル( HTML や GIF 等)の扱いは、従来どおり "644" 等としないと見えません。suEXEC はあくまで CGI や SSI の実行に関してのみ機能するものだからです。 ----------------------- 一方 http://tech.bayashi.net/pdmemo/permission.html では、 ----------------------- 拡張子が .html などの HTML ファイル ==> 600 ----------------------- となっています。 600では一般のサイト訪問者がread出来ない様に思えるのですが、問題ないのでしょうか? suEXEC設定がされているサーバーでは、各拡張子のパーミッションはどのように設定すれば良いのか教えてください。 (B) http://tech.bayashi.net/pdmemo/permission.html の ------------------------------- ■UNIX + Apache サーバで nobody権限の場合 UNIXのApacheは通常 nobody権限で実行され ■UNIX + Apache サーバで SuExec環境の場合 SuExec環境では、Apacheがユーザ(オーナ)権限で実行されます。 ------------------------------- 上記のApacheの nobody権限、ユーザ権限、オーナ権限 というのは FTPソフトでパーミッションを設定するときの オーナー権限、グループ権限、ユーザ権限 とは全く関係のない別物なのでしょうか? 特にnobody権限とは何でしょうか? -------------------- ファイルの読み書きもnobody権限しかありません。なので、パーミッションでも第三者に対する許可が必要です -------------------- ↑が何を言っているのか理解できません。 (A)(B)について教えてください。

    • ベストアンサー
    • HTML
  • Perlの省略可能な書き方

    open IN,'log.dat'; $_=<IN>; push(@a,$_); この3行を open IN,'log.dat'; push(@a,<IN>); このように2行に書き換えても文法上は問題ないですか?

    • ベストアンサー
    • CGI
  • Perlのtruncateについて

    + test.txt 0 1 2 3 + main.cgi open(FH, "+<test.txt"); my @Log = <FH>; truncate(FH, 0); seek($FileHandle, 0, 0); print(FH "4"); close(FH); これで、main.cgiを実行すると、test.txtの中身は 4 1 2 3 となってしまいます。truncateがきいてないようなのですが、なぜでしょうか。 truncate(FH, 0) or die "error"; とすると、errorと表示されてしまいます。 なぜこうなるのでしょうか。 致命的エラーがでるわけでもないので、環境が悪いわけではないような気がするのですが。 flockをしたいのですが、他にファイルの中身を空にする方法とかありませんか。

    • ベストアンサー
    • Perl
  • ホスト名を表示するには

    たぶんこの行と思うのですが、dat内容を表示するにはどのように修正すればよいのでしょうか #スレッドの投稿ログを開く open(FH,"../$_[0]/dat/$sure_id.dat"); dat内容は以下のとおりです。(ホスト名を取得するまでは、投稿内容でdatは終わってました) 投稿名</b> ★<b><><>04/3/6 22:42 ID:***<>投稿内容<>ホスト名<>

  • mod_rewriteのRewriteMapについて

    初めて質問させていただきます。 mod_rewriteのRewriteMapの使い方について質問があります。 /etc/httpd/conf/httpd.conf に以下のように書きました。 <IfModule mod_rewrite.c> RewriteEngine on RewriteLog /etc/httpd/logs/rewrite_log RewriteLogLevel 2 RewriteMap userMap txt:/home/userMap/userMap.txt </IfModule> この状態で、Apache2を再起動すると、Apacheが起動する際に以下のエラーが出て起動できません。 -- httpd を起動中: Syntax error on line 1036 of /etc/httpd/conf/httpd.conf: RewriteMap: file for map userMap not found:/home/userMap/userMap.txt -- エラーメッセージは指定されたファイルがないと言うことだと思うのですが、指定した位置には確かにファイルがあることを確認しています。 ファイルの所有権や上位ディレクトリのパーミッションの関係なのかなと思って、いろいろ変えて試しているのですが、一向にうまくいきません。 RewriteMapのファイルを置く位置はどこがベストなのかとか、パーミッションや所有権などで気をつけるべきポイントなどを教えていただけると助かります。 よろしくお願いいたします。

  • %stderr%の値が何をさしているのか

    Bareword "FH" not allowed while "strict subs" in use at C:/Apache Group/Apache2/cgi-bin/cgi.cgi line 1000. Perlを動かしたらこのような標準エラーが帰りました。 FHはファイルハンドルです。 はじめてみるエラーなので何を表しているのかわかりません。 該当のコードは $q = new CGI(FH); です。 open(FH,'<',$save_dir.$ID{$name}.'.dat'); $q = new CGI(FH); close FH; このようにして読み出しています。 new CGIはCGI.pmのクラス作成です。 何が問題なのでしょうか?

    • ベストアンサー
    • Perl
  • cgiログファイルの書き込みに余計なスペースが入る。

    ---------- #ここでログファイルに書き込みを行う。 open(FH,">>log.log"); print FH"ID=$ID&COUNT=$COUNT\n"; close(FH); #ログファイルをさらに開く。 open FILE, "<log.log"; flock(FILE,2); @log = <FILE>; flock(FILE,8); close FILE; ログファイルを並び替えてその順番で書き込み。 $gyou = @log; @sort=sort{(split(/&/,$b))[1] cmp (split(/&/,$a))[1];} @log; print "<FONT COLOR=RED>@sort</FONT><BR>\n"; open(FILE2, ">log.log"); print FILE2"@sort"; close (FILE2); ---------- というように行っていますが、一番最初のID=01&とかの前に半角スペースが入ります。 下の行に行くほどスペースが増えます。 どこが原因でしょうか?

    • ベストアンサー
    • Perl
  • perl localhostでgifを表示するには

    超初心者からプログラムを初めて1週間、 プログラム言語にはperlを使用しています。 mac os x です。 perlの教科書読みながら、アクセスカウンタを作ろうとした所、 何故かgif画像が表示されません。 ネットの素材置き場からとってきましたが、パソコン自身、gif自体は認識してくれてます。 ただ、それをperlに組み込んで使おうとすると、表示されません。 ブラウザはfirefoxとsafariで試しましたが、両方認識してくれませんでした。 ちなみにソースは ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>アクセスカウンタ2</TITLE></HEAD>\n"; print " <BODY>\n"; print "<H1>test</H1><HR>\n"; if ( open ( FH , "count.txt")){ $cnt = <FH>; close( FH ); $cnt++; print"<CENTER>\n"; foreach $fld (split (// , $cnt)){ print "<IMG SRC=\"${fld}.gif\">"; } print"</CENTER>\n"; if ( open(FH, ">count.txt" )){ print FH $cnt; close(FH); } else { print "ファイルの書き込みオープンに失敗しました。\n"; } } else { print "ファイルの書き込みオープンに失敗しました。\n"; } print "</BODY>\n"; print "</HTML>\n"; __END__ ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー です。 テキストファイルを確認しているので、 perl 自体の活動と、アクセスのログ?自体は正常に動いているみたいです。 お願いします。 助けてください!

    • ベストアンサー
    • Perl
  • cgiからファイルの書き込みができません

    apache上で動いていたcgiプログラムがある日を境に動かなくなってしまいました。 ファイルにテキストデータを書き込みたいのですがうまく動きません。すでにあるファイルに対しては、データを追加することができるのですが、新たにファイルを作成して書き込むことができないようです。 これに前後して以下のような作業を行っています。 ・PHPのインストール ・パーミッションの変更 パーミッションの問題かと思い色々試しましたがうまくうごきません。 どなたかご助言ください。 ちなみにパーミッションは /cgi-bin(777) オーナー:ユーザー -home(777) オーナー:ユーザー -counter.cgi(777) オーナー:ユーザー  -count.dat(777) オーナー:ユーザー で試してみましたが成功しませんでした。 サーバはapacheの1.3.22です。

  • xreaで7行のプログラムがエラー

    <?php print '<body>'; print 'print関数は成功。<br>'; $fp = fopen('dat.dat', 'wb'); if(!$fp)print '失敗。'; else{print '成功。';fclose($fp);} ?> ブラウザは以下のように表示しました。 どこがいけないのでしょうか? print関数は成功。 Warning: fopen(dat.dat): failed to open stream: Permission denied in ****/foptest.php on line 4 失敗。

    • 締切済み
    • PHP