2012-01-01 14 views
0

私はPHPスクリプトを使用してクライアントがアップロードしたファイルとディレクトリを削除するためにcrontabを通じてcrontabを使用しています。これは、ディレクトリ内のイメージが0644所有者99グループ99に設定されています。CrontabからUNLINKへのアクセスが拒否されました

次のスケジュールされたcrontabが実行されると、私は許可が拒否されました。

のphp -q -f /xxx/xxx/xxx/deletefiles.php

function RemoveDirectory($dirname) { 
    if (!file_exists($dirname)) { 
     return false; 
    } 
    if (is_file($dirname) || is_link($dirname)) { 
     return unlink($dirname); 
    } 
    $dir = dir($dirname); 
    while (false !== $entry = $dir->read()) { 
     if ($entry == '.' || $entry == '..') { 
      continue; 
     } 
     RemoveDirectory($dirname . DIRECTORY_SEPARATOR . $entry); 
    } 
    $dir->close(); 
    return rmdir($dirname); 
} 
if (is_dir('/xxx/xxx/public_html/xxx/xxx')) { 
    RemoveDirectory('/xxx/xxx/public_html/xxx/xxx'); 
} 

私はPHPを介してこれと同じスクリプトを自分で実行した場合、それだけで正常に動作します。 crontabに同じスクリプトを実行する権限を与えるにはどうすればよいですか?このファイルをルートディレクトリに配置する必要がありますか?私は好きではない。

どのようにこれを正しく説明しますか。すべての助言は充当されました。

答えて

0

削除する前にchmodを使用してアクセス許可を設定できます。次のようなものがあります。

if (is_file($dirname) || is_link($dirname)) { 
    chmod($dirname, 0777); 
    return unlink($dirname); 
} 


if (is_dir('/xxx/xxx/public_html/xxx/xxx')) { 
    chmod("/xxx/xxx/public_html/xxx/xxx", 0777); 
    RemoveDirectory('/xxx/xxx/public_html/xxx/xxx'); 
} 
+0

それはできませんでした。それは各ファイル(画像)上でも行われるべきですか?おそらく – Tim

+0

。私はサーバーがあなたがファイルを削除することができなくてもフォルダを削除させるとは思わない。 – john

+0

私はchmod()を取得しました:操作が許可されていません – Tim

関連する問題