Cron作业 - 从特定目录中删除zip文件

时间:2012-10-02 15:40:38

标签: php joomla cron cron-task

我正在尝试删除特定目录中的所有ziprar文件。 我已将cron设置为运行名为cron.php的PHP文件,该文件位于Joomla模块目录中。出于测试目的,我将cron作业时间设置为5分钟。

我还在名为test.zip

的目录中放置了一个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

不确定为什么会出现此错误,因为文件存在。有什么想法吗?

3 个答案:

答案 0 :(得分:6)

我认为问题是当前目录被视为PHP脚本运行的位置。

所以文件在:

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

但要删除的命令(一旦$file被解析)是:

unlink('test.zip');

当文件从其他地方运行时(比如~):

PHP正试图取消关联~/test.zip

考虑做

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

答案 1 :(得分:1)

你只传递文件名mate

unlink('/home/MYUSER/public_html/MYSITE/modules/mod_module_gen/package/'.$file);

答案 2 :(得分:1)

scandir在$ dir中返回一个文件名数组,但不包含路径本身....你正试图取消设置文件名;但是,除非$ dir是你当前的工作目录,否则只有在你的cwd中有一个同名文件的情况下它才可能有效。