Как скопировать папку поставщика, не обнаружив проблемы

#php #python #python-3.x #composer-php #virtualenv

#php #питон #python-3.x #композитор-php #virtualenv

Вопрос:

Я использую composer для своего проекта, и весь проект (даже vendor папка) находится под контролем версий git.
Я знаю, что это может показаться ложным действием, но у меня дефицит пропускной способности, и я хочу снизить использование полосы пропускания, поэтому я использую этот метод, чтобы просто скопировать vendor папку.
Когда я нажимаю на другой репозиторий и пытаюсь запустить php main.php оттуда, он говорит, что не может найти классы, которые я там использую.

Мне удалось решить эту проблему, удалив всю vendor папку и запустив заново composer i , но это не то поведение, которое я хочу. Я хочу использовать низкую пропускную способность, я не хочу ждать установки пакета.

Я использую тот же метод для virtualenv приложений на python, и возникает та же проблема, но эту проблему можно решить, просто запустив virtualenv venv/ снова, чтобы исправить новые пути для скопированной среды. Как я могу добиться такого же поведения с composer помощью? Я не вижу никакой информации или команды, которые могут помочь мне в этом.

Заранее спасибо, ребята 🙂

Комментарии:

1. Какова версия вашего композитора? Вы скопировали заполненную папку «Поставщик»?

2. попробуйте composer dump-автозагрузку в оболочке после извлечения из git

3. @UsamaAyaz да, в моем локальном репозитории я нажимаю composer i , и создается полная vendor папка. Затем я отправляю все файлы ( vendor/ мои php-файлы) на удаленный. Я хочу иметь возможность исправить эту vendor папку, а не устанавливать ее composer.json заново.

4. Да, я полностью понял ваше требование, заключающееся в том, чтобы сохранить папку поставщика в VCS, и вы не хотите снова устанавливать зависимости. Вы должны попробовать «composer dump-автозагрузка», который восстановит файл автозагрузки без повторной загрузки зависимостей.

5. Я пробовал это, но там написано Generated autoload files containing 0 classes , что проблема все еще существует.

Ответ №1:

Найдено решение.
Все, что вам нужно сделать, это удалить один файл и одну папку:

 rm -rf vendor/composer;
rm vendor/autoload.php;
 

Затем запустите composer i , и он снова воссоздаст удаленную composer папку и исправит файлы автозагрузки.

Хорошего дня.

Комментарии:

1. В этом случае вам придется снова переустановить пакеты, наоборот, вы попросили другой вариант, кроме этого.

2. Нет, он не будет загружаться. Я протестировал его с отключенным подключением к Интернету. Он просто проверяет, существует ли какая-то конкретная зависимость, и не будет загружать ее снова. Просто проверяет это. Кстати, спасибо за ваше время.