我正在尝试删除特定目录中的所有zip
和rar
文件。
我已将cron设置为运行名为cron.php
的PHP文件,该文件位于Joomla模块目录中。出于测试目的,我将cron作业时间设置为5分钟。
我还在名为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
不确定为什么会出现此错误,因为文件存在。有什么想法吗?
答案 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中有一个同名文件的情况下它才可能有效。