PHP установить права и удалить папку - файлы - PullRequest
0 голосов
/ 23 апреля 2020

Я использую PHP 7,3 + nginx на Centos. Мое приложение содержит подключенную папку, содержащую файлы с другого сервера. Мне нужно удалить эти файлы, как только я их не использую. Я использовал код ниже, чтобы удалить эти файлы. Код работает нормально, но некоторые из этих файлов создаются с дополнительными ограничениями (только для чтения), и мое приложение может удалить их, только если я вручную установлю для них chmod -R 775.

function remove_dir($dir) {
  if (is_dir($dir)) {
    $objects = scandir($dir);
    foreach ($objects as $object) {
      if ($object != "." && $object != "..") {
        if (filetype($dir."/".$object) == "dir"){
           remove_dir($dir."/".$object); 
        }else {
      unlink   ($dir."/".$object);
    }
      }
    }
    reset($objects);
    rmdir($dir);
    return true;
  }
  return false;
}

У меня есть пробовал это:

$command = "chmod -R 775 ".$folder;
exec($command);

, но всегда заканчивалось на:

ПРЕДУПРЕЖДЕНИЕ: [пул www] дочерний n сказал в stderr: "chmod: изменение разрешений '/ folder / file' : Операция не разрешена "

Можно ли установить эти разрешения или мне нужно создать файл, который я хочу удалить, с уже установленными правами доступа?

Я пробовал это , но это также дает мне ошибку разрешения.

$command = "rm -rf {$local}";
exec($command, $output, $status);

сказал в stderr: «rm: не удается удалить« папку / файл »: разрешение запрещено»



РЕДАКТИРОВАТЬ: Таким образом, я прочитал много рекомендаций, и я понял, что лучше не делать это через веб-приложение, даже если оно просто работает внутри моей компании. Я создал скрипт, и я собираюсь запустить его через crontab. Решите мою проблему без каких-либо проблем с безопасностью.

1 Ответ

0 голосов
/ 23 апреля 2020

Пример изменения разрешений:

<?php 
$fn = './test.txt';
chmod($fn, 0777);

Обратите внимание, что мы ставим 0 перед 777, чтобы попросить PHP интерпретировать его как восьмеричное число.

...