-1

zip特定のディレクトリからすべてのrarファイルを削除しようとしています。cron.phpJoomlaモジュールディレクトリにある、というPHPファイルを実行するようにcronを設定しました。テストの目的で、cronジョブ時間を5分に設定しました。

また、zipファイルをというディレクトリに配置しますtest.zip

指示:

php /home/MYUSER/public_html/MYSITE/modules/mod_module_gen/cron.php

PHP:注:「MYSITE」はサイトが配置されているサブドメインです

<?php
$dir = "/home/MYUSER/public_html/MYSITE/modules/mod_module_gen/package";
$files = scandir($dir);

foreach ($files as $file) {                   
   if(preg_match("/\.(zip|rar)$/", $file)){
        unlink($file);
   }                    
} 
?>

ただし、5分ごとに、エラーログは次のエラーをスローし続けます。

PHP Warning:  unlink(test.zip) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in /home/MYUSER/public_html/MYSITE/modules/mod_module_gen/cron.php on line 18

ファイルが存在するため、このエラーが発生している理由がわかりません。何か案は?

4

3 に答える 3

7

問題は、現在のディレクトリがPHPスクリプトの実行元として扱われることだと思います。

したがって、ファイルは次の場所にあります。

/home/MYUSER/public_html/MYSITE/modules/mod_module_gen/package

$fileただし、削除するコマンド(解決された後)は次のとおりです。

unlink('test.zip');

ファイルが別の場所から実行されているため(たとえば~):

PHPはリンクを解除しようとしています~/test.zip

行うことを検討してください

unlink($dir.'/'.$file)

于 2012-10-02T15:45:28.680 に答える
1

ここではファイル名のみを渡します。

unlink('/home/MYUSER/public_html/MYSITE/modules/mod_module_gen/package/'.$file);
于 2012-10-02T15:46:27.317 に答える
1

scandirは$dirにファイル名の配列を返しますが、パス自体は含まれていません。ファイル名の設定を解除しようとしています。ただし、$ dirが現在の作業ディレクトリでない限り、cwdに同じ名前のファイルがあった場合にのみ機能する可能性があります。

于 2012-10-02T15:46:49.317 に答える