directory — копировать каталоги в PHP, используя систему, а не простой рекурсивный код PHP

Я вижу, что нет встроенного способа копирования директорий в PHP. Я видел Скопируйте все содержимое одного каталога в другой, используя php но я не смог найти никаких проблем с system('cp -R src dest'),

Есть ли проблема с использованием выше system вызов? Я предполагаю, что единственная «проблема» — это создание одного дополнительного процесса за долю секунды. Правильно?

Я поясню, что в этом сценарии я не разрабатываю готовый продукт, который должен быть независимым от платформы, ни src или же dest исходят от пользовательского ввода, они на 100% чисты. Единственная проблема, которую я вижу (как было указано ниже) — это обработка ошибок.

0

Решение

  • Предполагая, что src и dest не жестко закодированы, вы должны тщательно избегать ввода против инъекций оболочки
  • Это, вероятно, не будет кросс-платформенным
  • Обработка ошибок станет более сложной, так как вам, вероятно, придется анализировать вывод оболочки / stderr

Редактировать:

При условии src & dest являются чистыми, и кросс-платформенная совместимость не будет проблемой, тогда единственной проблемой, которая все еще остается, является обработка ошибок — PHP копия () будет явно возвращать false в случае сбоя (например, неправильные разрешения файловой системы) и может быть превращен в пользовательскую рекурсивную функцию.

Mayble Laravel FileSystem поможет вам — она ​​широко используется и должна быть хорошо протестирована: https://github.com/laravel/framework/blob/master/src/Illuminate/Filesystem/Filesystem.php

Чтобы узнать, как получить stderr для команд оболочки, смотрите: https://stackoverflow.com/a/2320835/294696

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector