よろしくお願いします。
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 使用)
以上、よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
エラーメッセージが特殊変数$!に格納される場合がありますので、
unless ( chdir $tmpdir ){
## cdに失敗。
print 'chdir ', $tmpdir, 'に失敗。理由:', $!;
}
――みたいに出力させてみたら、原因究明に役立つかも。
既にそのようにプログラミングされてるかもしれませんが。
この回答への補足
ご回答ありがとうございます。
結果は、
「理由:No such file or directory」
でした。
「-d」でフォルダの存在を確認しているにも関わらず
このような結果とになってしまいました。
原因がわからないのであきらめたいと思います。
ご回答いただきました皆様、
本当にありがとうございました。
以上です。
No.3
- 回答日時:
フルパス指定にしてchdirしてみたらどうでしょう
No.2
- 回答日時:
if(-d $tmpdir)){
if(chdir("$tmpdir"){
は、
if(-d $tmpdir){
if(chdir("$tmpdir")){
の間違いだと思われますが、そういうことではないですよね?
この回答への補足
すみません、ただのタイプミスです。
正しくはご指摘通り。
-----------------------------
use Cwd;
$tmpdir="tmp";
if(-d $tmpdir){
if(chdir("$tmpdir")){
print"成功\n";
}
else{
print"失敗\n";
}
}
-----------------------------
perl による文法エラーはありませんでした。
以上、よろしくお願いいたします。
No.1
- 回答日時:
その tmp ディレクトリのオーナーとパーミッションはどうなってますか? CGI がウェブサーバによって起動された時のプロセスのユーザーでは chdir できないということはないですか? (たとえば root で 700 とかだと root 以外はそのディレクトリに入れない)。
この回答への補足
早速のご回答ありがとうございました。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
- Visual Basic(VBA) 【マクロ】フォルダにファイルが1つも無い時に、ファイルがありませんとメッセージを表示する 4 2022/08/28 08:48
- Excel(エクセル) 2つのマクロを連続して動かしたい 3 2022/09/20 23:46
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- システム パソコンの共有フォルダ移動について教えてください。 2 2022/04/07 10:14
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- Excel(エクセル) 【マクロ】ファイルを古い順に、1個ずつ移動する 1 2022/09/06 20:30
- デスクトップパソコン フォルダ内のファイル移動が出来ません 3 2022/10/16 05:42
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
useする自作のモジュールについ...
-
SSIで呼び出したURLの取得
-
エクセルで相対パスの書き方を...
-
6月の第2 第4火曜日は何日...
-
よくある 『 第○(1・2・3・4・...
-
エクセルで毎月第2週日の水曜日...
-
Perlでuse strictと %inの共存
-
週2回のペースって だいたい何...
-
ブラウザでタグがはみ出る
-
SSLで送られたhttpのヘッダ...
-
毎○曜日って、使いますか?
-
プログラムを書き足すことについて
-
指定日付から週始と週終を得る...
-
SuseLinux CGI
-
HTTP 200 OKの後のリダイレクト?
-
apacheでPerl CGIが作動せず、5...
-
URLConnection Timeoutエラー
-
VBAのやり方
-
file_get_contents でリダイレ...
-
先日、『カシオ エディフィス ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで相対パスの書き方を...
-
Perl の外部モジュールの利用方法
-
上位階層のディレクトリパスを...
-
Pythonのstatsmodelsでカルマン...
-
FORMのFILEでフォルダ(ディレ...
-
C# FTPサーバ カレントディレ...
-
CGI::SessionってPurePerlなの...
-
フォルダの移動をおこないたい...
-
ソリューションの名前の変更
-
URIとURLの違いは何ですか?
-
シェルスクリプトで以下のこと...
-
cocoa で ユーザーディレクトリ...
-
ディレクトリの削除について
-
SSIで呼び出したURLの取得
-
ディレクトリパスの取得について
-
useする自作のモジュールについ...
-
月の第一週とは
-
よくある 『 第○(1・2・3・4・...
-
エクセルで毎月第2週日の水曜日...
-
6月の第2 第4火曜日は何日...
おすすめ情報