• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ディレクトリ内の拡張子指定ファイル移動)

ディレクトリ内の拡張子指定ファイル移動

このQ&Aのポイント
  • ルートディレクトリ内の拡張子が『.send』のファイルを別のディレクトリに移動する方法についてご教授ください
  • ルートディレクトリのパーミッションが750のため、移動スクリプトでPermission deniedのエラーが出てしまいます。どうすれば解決できるでしょうか?
  • サーバーの仕様によりルートディレクトリのパーミッションを変更することはできず、移動スクリプトの実行に問題があります。

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.4

ファイル名がはいってませんね。 if (preg_match のなかに rename を入れてください。 opendir でファイル名を取得すると、 . と .. のファイル名も取れるので、これを排除ないといけません。 単純にファイル名でrenameをしてもだめですか? rename('backaaa.send','./back/backaaa.send'); 単純に構文が悪い可能性もあります。 これでもダメならば、FTP関数を使ってみたらどうなりますか?

shinmaiphp
質問者

お礼

幾度もご回答ありがとうございます。 FTP関数を使ってみたいと思います。 ホントにありがとうございます。

その他の回答 (3)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

#2の補足です。 ディレクトリではなくて、ファイルのパーミッションが違うのではないかと思います。 確認してみてください。

shinmaiphp
質問者

補足

ご回答ありがとうございます。 ./backのパーミッション(666,606,600)および他のファイルのパーミッションも変更してみて確認しましたが、状況は変わりませんでした。 下記のようなスクリプトで試したところ、エラーの内容が次のように変わりました。 ====スクリプト==== <?PHP if ($dir = opendir("./")) { while (($file = readdir($dir)) !== false) { if(preg_match("/\.send$/",$file)) { } } rename("./$file","./back/$file"); closedir($dir); } ?> ============= エラー 『Warning: rename(./,./back/): Device or resource busy in /home/httpd/vhosts/m-wf.com/web_users/web01988/test.php on line 7』

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

プログラム以外のファイルに実行権限を与えると動作しない場合があります。(サーバの設定で) 実行権限を与えないで試すとどうなりますか? 具体的には、777にしないで、666または606、600にしてみてください。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

そのファイルがopenで開けるのでしたら、 そのまま読み取って新しいディレクトリに書きこみすればいいと思います。 if ($dir = opendir("./")) { while (($file = readdir($dir)) !== false) { if(preg_match("/\.send$/",$file)) { // "/.send/" だと 例えば、mailsend.plとかにHITする $set = file($file); // ファイル読み込み。 $file = fopen("./back".$file,"w+"); for($i=0; $i<count($set); $i++) { fwrite($file,$set[$i]); } fclose($file); } } closedir($dir); }

shinmaiphp
質問者

補足

ご回答ありがとうございます。 ためしてみたところ、fopenの行でオープンできない旨のエラーが表示されます。 ======= Warning: fopen(./backaaa.send): failed to open stream: Permission denied in /home/httpd/vhosts/bbb.com/ccc/ddd/eee.php on line 6 //→fopenの行 ======= ./backのパーミッションにつきましては777に設定しています。 これは打つ手無いでしょうか?

関連するQ&A