Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 08.08.2017 19:26:45

Не работает рекурсия в Storage::allDirectories по FTP

Здравствуйте!

Версия Laravel: "laravel/framework": "5.4.*"
Метод подключения PHP: FPM
OS: Debian 3.16.43-2+deb8u2
Работаю по: CLI

Дело в следующем:

Имеется класс Storage, для работы с файловой системой, я работаю согласно статье этой.
Пытаюсь выбрать все дирректории Storage::disk('ftp')->allDirectories($directory); однако в результате получаю только первый уровень директорий, как если бы я сделал Storage::disk('ftp')->directories($directory);

Также пробывал работать с Storage::allFiles($directory); результат такой же, выбирается только из указаной директории рекурсии нет.

Рекурсии нет только при работе с файловой системой по ftp, при работе в локальной среде вышепредставленные функции отрабатывают славно.

В документации сказано: Интеграция Flysystem отлично работает с FTP, однако не срабатывает.

Разъесните пожалуйста что к чему по данному вопросу, очень нужен совет.

Изменено ZGmae5dF (09.08.2017 11:08:41)

Не в сети

#2 09.08.2017 09:19:21

Re: Не работает рекурсия в Storage::allDirectories по FTP

Что даже мыслей ни у кого нет?

Не в сети

#3 09.08.2017 09:51:47

mixer
Откуда: Хабаровск
Сообщений: 19

Re: Не работает рекурсия в Storage::allDirectories по FTP

Покопался немного внутри. Там что то мутное.
Есть настройка recurseManually которая должна из конфига стандартного читаться. Не читается!
Установил ее насильно в true. ftp вернул главную папку и подпапки но у подпапок нет родителя.
Т.е. получился обычный список.
Разбираться дальше желания огромного нет и опыта не хватает.
Задал бы вопрос где нибудь здесь: https://discord.gg/ktA4Kh

Не в сети

#4 09.08.2017 10:19:05

Re: Не работает рекурсия в Storage::allDirectories по FTP

Написал, толку 0.

Не в сети

#5 09.08.2017 10:32:58

mixer
Откуда: Хабаровск
Сообщений: 19

Re: Не работает рекурсия в Storage::allDirectories по FTP

Дружище. Представь что никто с этой фишкой не работет, и что. Кто кинется разбираться!?
Напиши уже сам рекурсию хождения по папкам. Делов то.

Не в сети

#6 09.08.2017 10:34:06

Re: Не работает рекурсия в Storage::allDirectories по FTP

Жаль что нет из коробки. Фреймворк хорош, но видимо и в нем есть косяки.
Всеже спасибо.

Не в сети

#7 09.08.2017 12:25:44

Re: Не работает рекурсия в Storage::allDirectories по FTP

Жаль что нет из коробки. Фреймворк хорош, но видимо и в нем есть косяки.

Драйвер для работы по FTP Laravel взял отсюда https://flysystem.thephpleague.com/adapter/ftp/
Этот пакет и в правду требует установку конфига recurseManually в значение true, иначе рекурсия не будет работать.

Есть настройка recurseManually которая должна из конфига стандартного читаться. Не читается!

Жаль что нет из коробки. Фреймворк хорош, но видимо и в нем есть косяки.

У меня нет ларавел проекта под рукой. Ты можешь разобраться почему-же конфиг recurseManually не ставится и отправить пул реквест.
Либо, ты можешь инстанцировать Filesystem сам, указав нужные конфигы для объектов.

$driver = new League\Flysystem\Adapter\Ftp(config('filesystems.disks.ftp'));
$fileSystem = new Illuminate\Filesystem\FilesystemAdapter($driver);

(предварительно добавив конфиг recurseManually => true в 'filesystems.disks.ftp'

Как-то так (разбирался исключительно бегая по гитхабу, возможно что-то упустил из вида).

Изменено covobo (09.08.2017 12:29:27)

Не в сети

#8 09.08.2017 12:50:13

mixer
Откуда: Хабаровск
Сообщений: 19

Re: Не работает рекурсия в Storage::allDirectories по FTP

Да я же написал что дело не только в конфиге.
если дерево такое

111
    222
        333
    444

то ftp вернет
111
222
333
444
а не
111/222/333
111/444
вот в чем проблема.

Не в сети

#9 09.08.2017 12:53:15

Re: Не работает рекурсия в Storage::allDirectories по FTP

Нет, оказывается все не так:
Пример:
            'host'     => 'ftp.sci-nnov.ru',
            'username' => 'anonymous',
            'password' => 'anonymous',

5LWRePg.png

А вот с ftp.zakupki.gov.ru только первый уровень.

И как показали тесты с различными серверами $recurseManually не влияет.

Изменено ZGmae5dF (09.08.2017 12:54:14)

Не в сети

#10 09.08.2017 13:38:40

mixer
Откуда: Хабаровск
Сообщений: 19

Re: Не работает рекурсия в Storage::allDirectories по FTP

Ну тогда все гораздо забавнее.
Значит все зависит от типа сервера и его настроек.
Это печально.

Не в сети

#11 09.08.2017 13:39:23

mixer
Откуда: Хабаровск
Сообщений: 19

Re: Не работает рекурсия в Storage::allDirectories по FTP

Сделать самому рекурсию. И будет работать всегда!

Не в сети

Подвал раздела