Skip to content

Fix Windows media source paths for Flysystem - #92

Open
Ibochkarev wants to merge 1 commit into
3.xfrom
fix/issue-15438-windows-path-separator
Open

Fix Windows media source paths for Flysystem#92
Ibochkarev wants to merge 1 commit into
3.xfrom
fix/issue-15438-windows-path-separator

Conversation

@Ibochkarev

@Ibochkarev Ibochkarev commented Aug 21, 2026

Copy link
Copy Markdown
Member

Что сделано

На Windows ключи объектов Flysystem используют /, а код media source соединял и резал пути через DIRECTORY_SEPARATOR (\). Переименование вложенной папки теряло родительский каталог и перемещало объект не туда (часто под core-путь сайта). #15440 только убрал PHP-нотисы «passed by reference»; создание путей оставалось сломанным (подтверждено в комментариях к issue).

Это изменение трактует пути объектов Flysystem как всегда /: sanitizePath / postfixSlash, хелперы для root / join / rename, та же логика join для create, move, list ids и S3.

Как проверить

  1. На Windows (или с backslash-входами): создайте вложенную папку под media source, переименуйте, подтвердите, что она остаётся под тем же родителем.
  2. Переименуйте вложенный файл так же.
  3. Создайте папку/файл по вложенному пути и переместите объект между папками.
  4. Gate E:
    • php -l core/src/Revolution/Sources/modMediaSource.php → exit 0
    • php -l core/src/Revolution/Sources/modS3MediaSource.php → exit 0
    • composer run-script phpunit -- --filter modMediaSourceTest → OK (4 теста, 15 assertions)

Связанные

Refs modxcms#15438

Совместимость

Затрагивает локальные и S3 media source на всех платформах. Поведение на Unix не меняется (/ уже совпадал с DIRECTORY_SEPARATOR). Join путей файлового менеджера на Windows теперь должен совпадать с ключами Flysystem. Локальная OS-обработка путей в prepareSrcForThumb по-прежнему использует DIRECTORY_SEPARATOR для проверок phpThumb/file_exists.

Совместимость

Без изменения сигнатур публичных методов. Строки путей из API media source могут нормализовать разделители к / более консистентно (Flysystem-совместимо). Безопасно для patch-потребителей, уже трактовавших пути Flysystem как /.

Оригинал: modxcms#16995

Flysystem object keys always use "/", so DIRECTORY_SEPARATOR broke
rename/create/move path joins on Windows. Normalize virtual paths to
forward slashes and keep parent directories on rename.
@Ibochkarev Ibochkarev changed the title Фикс путей media source на Windows для Flysystem Fix Windows media source paths for Flysystem Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant