2012-03-01 103 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 ... etc時,它就像打算一樣工作。這是一個權限錯誤還是別的?

感謝

+1

什麼用戶用於運行cron?以該用戶身份登錄並嘗試使用其權限運行腳本。同樣如你所知,最好使用完整路徑。 – hillel 2012-03-01 20:19:25

回答

4

嘗試添加完整的路徑運行不同的權限,我已經收到並處理這個。而不是$myFile = "../watermarked/".$name;嘗試$myFile = "/home/user/path/to/watermarked/".$name;

這將允許系統看到它,因爲crons是由系統執行的。它最初並不考慮執行文件的位置。

+0

謝謝你有一點擺弄我有它的工作。非常感謝你! – obkso 2012-03-01 20:32:11

+0

只是一個快速的評論,它的工作有點意圖,但它留下的文件大小爲0的文件? – obkso 2012-03-01 20:39:22

+0

嘗試使用[exec()](http://php.net/manual/en/function.exec.php)傳遞'rm -f/file/path /和/ name'這將確保系統刪除而不是僅僅清空它的內容。 – OpensaurusRex 2012-03-01 20:43:34

1

文件由cron運行比那些由HTTP服務器