Перемещение файла в другую папку laravel - PullRequest
0 голосов
/ 05 марта 2020

Мне нужны журналы хранения за последние 7 дней, чтобы переместить новую папку. Но я не могу переместить их и получил эту ошибку.

переименовать (/ var / www/html/eMarketing/storage/logs/old-log-2020-02-27, / var / www/html/eMarketing/storage/logs/laravel-2020-02-27.log): не каталог

Мой код здесь

public function logs() 
{
  $today = \Carbon\Carbon::today()->format('Y-m-d');
  $days  = \Carbon\Carbon::today()->subDays(7)->format('Y-m-d');

  $newDirectoryPath = storage_path('logs/old-log-'.$days);
  if (!\File::isDirectory($newDirectoryPath)) {
      \File::makeDirectory($newDirectoryPath);
  }

  $path = storage_path('logs/');
  $allFiles = \File::allFiles($path);

  foreach($allFiles as $files) {
      $file = pathinfo($files);
      $logDay = str_replace('laravel-','', $file['filename']);  

      if ($logDay >= $days && $logDay < $today) {
          \File::move($newDirectoryPath, $path.$file['basename']);
      }

   }
}

1 Ответ

3 голосов
/ 05 марта 2020

Проблема

Проблема в том, что у вас нет файлов для перемещения .

$newDirectoryPath = storage_path('logs/old-log-' . $days);

if (!\File::isDirectory($newDirectoryPath)) {
    \File::makeDirectory($newDirectoryPath);
}

Для переименования или перемещения можно использовать метод move(). существующий файл в новом месте. Но $newDirectoryPath - это папка, а не файл.


Решение

Вам необходимо изменить:

\File::move(
    $path . $file['basename'],                  // old file
    $newDirectoryPath . '/' . $file['basename'] // new file
);
public function logs()
{
    $today = \Carbon\Carbon::today()->format('Y-m-d');
    $days  = \Carbon\Carbon::today()->subDays(7)->format('Y-m-d');

    $newDirectoryPath = storage_path('logs/old-log-' . $days);
    if (!\File::isDirectory($newDirectoryPath)) {
        \File::makeDirectory($newDirectoryPath);
    }

    $path     = storage_path('logs/');
    $allFiles = \File::allFiles($path);

    foreach ($allFiles as $files) {
        $file   = pathinfo($files);
        $logDay = str_replace('laravel-', '', $file['filename']);

        if ($logDay >= $days && $logDay < $today) {
            \File::move($path . $file['basename'], $newDirectoryPath . '/' . $file['basename']);
        }

    }
}
...