2012-03-01 1 views
2

У меня есть PHP-файл, чтобы удалить день старые изображения с сервера и обновлять базу данных каждый часCronjobs удалить вопрос файла

$downloadDeleteQuery = mysql_query("SELECT * FROM images WHERE timeleft < 1") or die(mysql_error()); 
while($downloadDelete = mysql_fetch_array($downloadDeleteQuery)){ 

$name = $downloadDelete['name']; 

$myFile = "../watermarked/".$name; 
$fh = fopen($myFile, 'w') or die(""); 
fclose($fh); 
unlink($myFile); 

} 

То есть код для удаления файлов с сервера. Этот файл запускается как cronjob и работает каждый час, редактируя базу данных, но он не удаляет файлы, но когда вы переходите непосредственно к файлу http://www ... и т. Д., Он работает так, как предполагается. Это ошибка разрешения или что-то еще?

Благодаря

+1

Какой пользователь используется для запуска cron? войдите в систему как пользователь и попробуйте запустить свой скрипт с его разрешениями. Также, как вам сказали, лучше использовать полный путь. – hillel

ответ

4

Try добавляя полный путь, я должен был иметь дело с этим раньше, как хорошо. Вместо $myFile = "../watermarked/".$name; попробуйте $myFile = "/home/user/path/to/watermarked/".$name;

Это позволит системе увидеть его, так как коронки выполняются системой. Первоначально он не учитывает местоположение исполняемых файлов.

+0

Благодарим вас за битву. У меня есть работа. Большое спасибо! – obkso

+0

Просто быстрый комментарий, он работает, но он оставляет файл там, где FileSize равен 0? – obkso

+0

Попробуйте использовать [exec()] (http://php.net/manual/en/function.exec.php) для передачи 'rm -f/file/path/and/name'. Это позволит убедиться, что система удаляет, а не просто опорожняет его содержимое. – OpensaurusRex

1

Файлы, управляемые хрон имеют разные права доступа, чем те, которыми управляют HTTP-сервер