-1

我正在尝试从特定目录中删除所有文件ziprar我已将 cron 设置为运行名为 的 PHP 文件cron.php,该文件位于 Joomla 模块目录中。出于测试目的,我将 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

你在这里只传递文件名 mate

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 回答