• ベストアンサー

フォルダの移動をおこないたいのですが・・・

よろしくお願いします。 CGIの中間プログラムとして、 「カレントフォルダを移動して特定のフォルダを削除する」 というようなPGMを作っているのですが、フォルダ移動の処理がうまくいきません。 ----------------------------- use Cwd; $tmpdir="tmp"; if(-d $tmpdir)){  if(chdir("$tmpdir"){   print"成功\n";  }  else{   print"失敗\n";  } } ----------------------------- 上記記述の結果は失敗となります(実際のPGMより簡略化しております)。 「tmp」フォルダは存在するが 移動に失敗しているということです。 私の記述方法が間違っているのでしょうか? サーバー・・・HP-UX 開発言語・・・Perl5 開発端末・・・windows2000(Tera Term 使用) 以上、よろしくお願いいたします。

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.4

エラーメッセージが特殊変数$!に格納される場合がありますので、 unless ( chdir $tmpdir ){ ## cdに失敗。 print 'chdir ', $tmpdir, 'に失敗。理由:', $!; } ――みたいに出力させてみたら、原因究明に役立つかも。 既にそのようにプログラミングされてるかもしれませんが。

kal1119
質問者

補足

ご回答ありがとうございます。 結果は、 「理由:No such file or directory」 でした。 「-d」でフォルダの存在を確認しているにも関わらず このような結果とになってしまいました。 原因がわからないのであきらめたいと思います。 ご回答いただきました皆様、 本当にありがとうございました。 以上です。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

フルパス指定にしてchdirしてみたらどうでしょう

kal1119
質問者

補足

フルパスでchdir、フルパスでchroot、 共に失敗のようです。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

if(-d $tmpdir)){  if(chdir("$tmpdir"){ は、 if(-d $tmpdir){ if(chdir("$tmpdir")){ の間違いだと思われますが、そういうことではないですよね?

kal1119
質問者

補足

すみません、ただのタイプミスです。 正しくはご指摘通り。 ----------------------------- use Cwd; $tmpdir="tmp"; if(-d $tmpdir){  if(chdir("$tmpdir")){   print"成功\n";  }  else{   print"失敗\n";  } } ----------------------------- perl による文法エラーはありませんでした。 以上、よろしくお願いいたします。

回答No.1

その tmp ディレクトリのオーナーとパーミッションはどうなってますか? CGI がウェブサーバによって起動された時のプロセスのユーザーでは chdir できないということはないですか? (たとえば root で 700 とかだと root 以外はそのディレクトリに入れない)。

kal1119
質問者

補足

早速のご回答ありがとうございました。 tmpフォルダは中間で作成され、処理終了後に削除されるため、以下の記述を追記し ------------------------------ if(-d $tmpdir){ print"成功\n"; } if(-r $tmpdir){ print"読み\n"; } if(-w $tmpdir){ print"書き\n"; } if(-x $tmpdir){ print"実行\n"; } if(-o $tmpdir){ print"所有\n"; } if(-e $tmpdir){ print"移動可\n"; } ------------------------------ その結果 ------------------------------ 成功 読み 書き 実行 所有 移動可 ------------------------------ となっておりました。 フォルダであり、読み書き実行権があり、実行ユーザーとtmpフォルダのユーザーが同じで、移動可なのにchdirで失敗・・・ 何が原因かわかりますでしょうか? 以上、よろしくお願いいたします。

関連するQ&A