项目作者: Mediahero

项目描述 :
Скрипт для очистки каталога upload/iblock сайта на CMS 1С-Битрикс от неиспользуемых файлов (оставшихся после удаления элемента инфоблока).
高级语言: PHP
项目地址: git://github.com/Mediahero/bitrix-clear-upload.git
创建时间: 2015-12-20T00:00:34Z
项目社区:https://github.com/Mediahero/bitrix-clear-upload

开源协议:

下载


bitrix-clear-upload

Скрипт для очистки каталога upload/iblock сайта на CMS 1С-Битрикс от неиспользуемых файлов (оставшихся после удаления элемента инфоблока).

Описание

Скрипт для очистки каталога upload/iblock от неиспользуемых файлов, которые могут оставаться после удаления элемента инфоблока и, особенно, многократных обменов с 1С.

Скрипт проверяет каждый файл в каталоге upload/iblock, есть ли он в таблице b_file и если его там нет выводит полный путь к нему на экран.

Возможные опции

--move-file=/путь: перемещает файл в указанную директорию с сохранением иерархии.

--delete-files: удаляет файл и каталог, в котором находился удаляемый файл (если он пуст).

В настоящий момент реализован простейший алгоритм, который перед сканированием каталога upload/iblock загружает все имена файлов из таблицы b_file в оперативную память, поэтому надо иметь в виду, что в случае нехватки памяти скрипт будет падать.

Важное замечание про short_open_tag PHP

При использовании более-менее современных версий PHP (точно для версий 7+) при запуске скрипта из консоли вы вместо результата можете увидеть какой-то исходный код, завершающийся ошибкой

  1. PHP Fatal error: Uncaught Error: Call to a member function Query() on null in /var/www/bitrix-clear-upload/clear_upload.php:67
  2. Stack trace:
  3. #0 {main}
  4. thrown in /var/www/bitrix-clear-upload/clear_upload.php on line 67

В этом случае вам необходимо в конфигурации PHP (обычно php.ini), предназначенную для запуска PHP в консоли, включить опцию short_open_tag = On, т.к. в ядре Битрикса еще очень много кода, используюшего именно сокращенный вариант тэга, обозначающего начало php-кода.

Путь к php.ini на сервере вы можете узнать, выполнив в консоли команду:

  1. $ php -i | grep php.ini
  2. Configuration File (php.ini) Path => /etc/php/7.3/cli
  3. Loaded Configuration File => /etc/php/7.3/cli/php.ini

Изменять лучше не сам php.ini, а добавить в каталог (путь пишу для моего примера) /etc/php/7.3/cli/conf.d файл с именем 99-bitrix.ini и добавить в него следующее содержимое:

  1. short_open_tag = On

После этого скрипт заработает и у вас :-)

Примеры использования

Получить список всех неиспользуемых файлов из каталога upload/iblock:

php clear_upload.php /var/www/example.com

Переместить все неиспользуемые файлы из каталога upload/iblock в папку /backup:

php clear_upload.php --move-files=/backup /var/www/example.com

Удалить все неиспользуемые файлы из каталога upload/iblock:

php clear_upload.php --delete-files /var/www/example.com