#docker #symfony #composer-php #symfony-flex
Вопрос:
Я создаю свое приложение symfony 4 с помощью composer, устанавливаемого в контейнер docker.
Версия композитора 1.10.19
Но я понял эту ошибку.
[Исключение ErrorException] входные данные файла(/root/.composer/кэш/репо/https—flex.symfony.com/): не удалось открыть поток: Является каталогом
Если я запущу composer, установите еще 1 раз без перерыва, сборка будет выполнена успешно.
Если я удалю поставщика и каталог var/кэша в каталоге проекта, снова возникнет ошибка.
Я попробовал эти методы:
- команда запуска ‘composer clearcache’ не удалась
- Удалить каталог ~/.composer не удалось
- chmod -R 777 ~/.композитор не добился успеха
Выполняется некоторая сборка одного и того же проекта внутри другого контейнера. Мой контейнер начинается с этого тома:
- каталог проектов
- ~/.каталог ssh
Я ищу по сети, но не нашел решения. Пожалуйста, помогите.
Комментарии:
1. rm -rf /root/.composer/кэш/репо/https—flex.symfony.com amp;amp; touch /root/.composer/кэш/репо/https—flex.symfony.com работал, но есть ли какое-либо другое решение
2. Я надеюсь, что решение отличается от обновления композитора. Потому что symfony выдает недостаточно ошибок памяти, и я не могу увеличить этот лимит памяти.
3. разве вы не можете увеличить его с помощью
COMPOSER_MEMORY_LIMIT=-1 composer update
?4. Сделайте так, чтобы ваш композитор устанавливался без кэша :
composer install --no-cache ...
Или, если вы сможете обновить flex, это решит проблему в соответствии с создателем Symfony : github.com/symfony/flex/issues/780
Ответ №1:
Это была ошибка в версии Flex
В последней версии (как я пишу 1.13.4) проблема решена.
Проблема заключалась в:
Запись в кэш с пустым ключом завершится ошибкой «не удалось открыть поток: это каталог», поэтому не пытайтесь это сделать.
Мы заметили это, когда cloudflare — или серверная служба — ответили заголовком «последнее изменение» для наших серверов клиентских служб (AWS), но не для нашей локальной системы. Это вызвало выполнение условия, и он пытается написать файл кэша без имени файла.
Эта проблема была решена с помощью фиксации d81196c3f3b5
Изменить: как опубликовано @Tmb, необходимо использовать обходной путь: composer install --no-cache ...
Комментарии:
1. была та же проблема, очистка кэша композитора сработала для меня.