• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perlでファイルが作成できません)

perlでファイルが作成できません

このQ&Aのポイント
  • perlに関しては素人でうまくいかず悩んでいます。amezo.cgiと同じフォルダや上位フォルダにはhtmlファイルを作成できるのですが、testbbsフォルダを指定したら生成できなくなってしまいます。
  • linuxでamezo.cgiからファイルを作成したいですが、testbbsフォルダを指定したらファイルを生成できません。環境変数などの指定が必要なのでしょうか?
  • perl初心者です。amezo.cgiからファイルを作成したいのですが、testbbsフォルダを指定するとファイルが生成されません。どうすれば作成できるでしょうか?

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

  • ベストアンサー
  • TYWalker
  • ベストアンサー率42% (281/661)
回答No.2

念のため、/var/www/html/testbbs/というフォルダはあるんですね? コマンドラインで、/var/www/html/testbbs/に行って、touch fooとか書いたら、fooというファイルは出来ますか? (rootではなく、一般ユーザーで) open(NS,">/var/www/html/testbbs/$newres.html") or warn "!!! Error Log==> $!"; とやってみたらどうでしょうか。 open命令で失敗すると、その理由($!変数に格納される)が!!! Error Log==>という文字列と共にエラーログに吐き出されます。 エラーログに「何も」出ていないというのがちょっとヘンですね。 何かしら何かが表示されているものですから・・・。 あまりにも早く流れてしまっていて、ファイルの作成に失敗しているログは通り過ぎている(あるいは循環ファイルで、そのメッセージは消え去っている)とか・・・。 CGI::Carpは試してみましたか? あまりお役に立てず、スミマセン。

strayhoneybee
質問者

お礼

有難うございます! open(NS,">/var/www/html/testbbs/$newres.html") or warn "!!! Error Log==> $!" をためしたらPermission denied と出ました! 777にしてもパーミッション足らないと言われるのは意味分かりませんが原因が分かったので少し進みました! 有難うございます!

strayhoneybee
質問者

補足

貴重な情報有難うございます。 CGI::Carp試してみました。とても便利ですねこれ。。 直前でdieを行うと何故かファイルが生成されることが分かりました。 全然意味分からないですね 不自然ですが書き込めたのでパーミッションの問題ではなさそうです。また、ファイル名が違うという事でもなさそうです。 open(NS,">/var/www/html/testbbs/test.html") ; だけですとtest.htmlは生成されません。 use CGI::Carp qw(fatalsToBrowser); die "aaa"; open(NS,">/var/www/html/testbbs/test.html") ; こうするとdieでaaaが出るのですが何故かtest.htmlが生成されています。 もはや根本的におかしいような気がしてきました。

その他の回答 (1)

  • TYWalker
  • ベストアンサー率42% (281/661)
回答No.1

HTTPサーバーはApacheという認識でいいでしょうか。 CGIプログラムはnobodyというユーザーで走りますので、フォルダにこの人の書き込み権限を与えてやればいいと思います。 現状でcgi-binフォルダには書き込み権限があるようですので、ここと同じ権限をtest.cgiに与えてやればいいのではないでしょうか。 「パーミッション」「chmod」などで検索してください。 パーミッションはFTPクライアントで変更しても手軽です。 なお、ファイルを作成しようとして失敗した瞬間には、何らかのログが残っているのが普通です。 「Apache」「エラーログ」などで検索してみてください。 お使いのHTTPサーバーの設定によってログのファイル名は違います。 ログファイル名がわかれば、エラーを起こさせて、すぐにtailコマンドでログファイルの末尾を見ればたいてい原因が分かります。 でも、ログファイルをいちいち見るのは面倒なので、その場合はCGI::Carpを使えば、エラーログを自分が便利なファイルや、CGIのブラウザー画面に表示できます。 http://homepage3.nifty.com/hippo2000/perltips/CGI/Carp.html いろいろやってみてください。 たぶん、十中八九パーミッションの問題ではないでしょうか。

strayhoneybee
質問者

お礼

有難うございます。 apacheのエラーログには何も残っていません。 パーミッションも777に設定しても作成されない状況です。 open(NS,">$bbspath$folder/$newres.html"); を open(NS,">$bbspath/$newres.html"); にしたり open(NS,">/var/www/html/$newres.html"); にしたら作成されますが、 open(NS,">/var/www/html/testbbs/$newres.html"); にすると作成できなくなります。 パーミッションは777でも作成できません。 すみませんがこの情報で原因が分かりますでしょうか?

strayhoneybee
質問者

補足

有難うございます。 apacheのエラーログには何も残っていません。 パーミッションも777に設定しても作成されない状況です。 open(NS,">$bbspath$folder/$newres.html"); を open(NS,">$bbspath/$newres.html"); にしたり open(NS,">/var/www/html/$newres.html"); にしたら作成されますが、 open(NS,">/var/www/html/testbbs/$newres.html"); にすると作成できなくなります。 パーミッションは777でも作成できません。 すみませんがこの情報で原因が分かりますでしょうか?

関連するQ&A

専門家に質問してみよう