ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

超初心者向けCGI講座コミュのサーバーからフォルダ削除

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして。
CGI超初心者です。
にもかかわらず、自分で借りたレンタルサーバーに
WIKIを設置しようとテストしていて
あとで全部削除しようとしましたがフォルダーだけが
残ってしまってどうしても消せません。
一応サーバー屋さんにも質問投げてますが、

簡単なCGIでフォルダーを消す方法があると
http://sb.xrea.com/archive/index.php/t-437.html

例えば、消したいURLが
http://sample.s1.xrea.com/cgi-bin/link


#!/usr/local/bin/perl
system("rm -rf /virtual/sample/public_html/cgi-bin/link");
print "Content-type: text/html;OK!!\n\n ";
exit;

上参考にやってみましたができません。
フォルダーの設定の仕方がなんか
間違っているのかもしれません。。
サーバーはTOK2プロ使ってます。
サブドメイン使っています。

http://aaa.dee.cc/
サブドメインでないほうは。。
http://9.dee.cc/~aaa/

この場合
system("rm -rf /virtual/aaa/public_html/消したいフォルダ");
としても反応なしです。。

どなたか教えていただければとても助かります。。。

コメント(15)

消したいフォルダの書き込み権が付与されているのか
確認してみたでしょうか?
フォルダを削除する場合にはフォルダに対する書き込み権限が
必要になります。
削除が出来ないフォルダですが WIKI で作成したフォルダですか?

みゃ' さんも書いてますが、誰が作ったか(権限)をチェックするのが一番の近道です。
/virtual/aaa/public_html/で合ってる?
うちが借りてる鯖だと
/home/aaa/public_html/だけど
Wikiが作ったフォルダであればプログラムから削除かけられそうなものですけどね。

perlのsystem関数の戻り値を見てもいいのではないでしょうか。

#!/usr/local/bin/perl
my $ret = system("rm -rf /virtual/sample/public_html/cgi-bin/link");
print "Content-type: text/html;$ret\n\n ";
exit;

としてみたときの値は?
他にもそのコマンドを実行したときの表示をなんとかトラップできませんか。
みなさん早々にお返事ありがとうございます。涙涙

WIKI自体を稼動させてからできたフォルダーではなく
WIKIをダウンロードしたもの一式をサーバーにアップして
そのまんまそれを削除しようとしました。
中身のファイルをすべて削除しましたがフォルダーだけ削除できません。。
FFFTPやレンタルサーバーのファイルマネージャー、IEでも
試しましたが容量0になっていて見えるファイルはなにも
残っていません。。

もちろんサーバー屋から連絡はまだないです。。
やはり値段なりでした〜。。涙

レンタルサーバーのファイルマネージャーで削除しようとすると以下のようにでます。

Warning: ftp_rmdir() [function.ftp-rmdir]: /public_html/delete/: Directory not empty in /home/www/html/ftp/lib.ftp.php on line 262

フルパスは
●ユーザーディレクトリーのフルパス
/home/member/ユーザーID
となってましたので

/home/member/aaa/public_html/delete
でCGI作ってためしましたが
ブラウザーには"Internal Server Error"とでてだめでした。

所有権はFFFTPでみるとアカウント名になってます。
ローカルで作ったフォルダーをあげて試してみましたが
削除できました。やはりこのWIKI一式のフォルダが削除できないだけです。。

鯖屋まちかな〜。。

他のサーバーでも同様のこと起こりうるのでしょうか?
サーバー屋によってちがうのでしょうか?
WIKIによってちがうのでしょうか?
ちなみにPUKIWIKIです。
消そうとするフォルダ内にファイルが残っているのでエラーに
なっているんですね。
もしかしたらフォルダ内に自分が見えないファイルが残っている
状態なのかもしれません。

実物見ないと原因解らないだろうからサーバ屋さんに聞いた方が
早そうですね。
サーバーによってはrmが使えなかったりするかもですね。

即席で汚いですが、下記のもので消えないですか?
--------------------------------------------------------
#!C:/perl/bin/perl

print "Content-type: text/html\n\n";

my $directory = "./dir";
&checkDir($directory);

sub checkDir{
my $directory = shift;
opendir(DIR,$directory);
foreach(sort{$a cmp $b} readdir(DIR)){
if(-d "$directory/$_" && $_ !~ /^\.{1,2}$/){
print "$directory/$_<hr>";
checkDir("$directory/$_");
}elsif(-e "$directory/$_" && $_ !~ /^\.{1,2}$/){
print "<font color=red>$directory/$_</font><hr>";
unlink("$directory/$_");
}
}
closedir(DIR);
rmdir($directory);
}
--------------------------------------------------------
もっと単純に?File::pathモジュールにrmtree()なんてのもあるみたいなので、興味があれば調べてみてください。

#私は使ったことないので判らないです。
みなさんありがとうございます。

みずのさんもありがとうございます〜。
みずのさんのを試す前に、

ちょっと前にOKWEBでも質問してみていたのですが
こちらの回答でいただいたCGIで消えました〜!!

http://okwave.jp/kotaeru.php3?q=1739409

ありがとうございました。
これ便利ですね〜
ってちょいまち
system関数が使えないだけでバッククォートは使えるって
なんて微妙な仕様なんだ!

この二つの意味の違いについてちゃんと調べといたほうがいいすよ>ちーぼーさん

一応基本だとおもうんで。
切羽詰まってたのでしょうけど、マルチポストはよくないですよ。
今後はマルチポストをしないでくださいね。
消えないからと、直ぐに実害があるわけではなかろうに。
少ない情報を頼りに状況を推測し、このトピにコメントくれた方々に無駄足踏ませたことを自覚して下さい。
>11気持ちとっても解る

>>3&4でほぼ解決できるハナシで
>>9のリンク先みたいに書かなきゃ理解できない人がスクリプト使ってフォルダ操作するとは誰も思わんよな〜
マルチポストはまあいいんじゃないかな?と思います。
前もってマルチポスト先を書いたりするともっといいとは思いますが。

まあ、楽しくやりましょう♪
みなさんありがとうございました。

色々勉強不足な点もありますので
今後はもうちと頑張ります〜。。汗。

こちらで特に親切にコメントいただいた
KIDD@TV募集中 さん、
みずのさんありがとうございました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

超初心者向けCGI講座 更新情報

超初心者向けCGI講座のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング