Как восстановить разрушенный проект laravel с помощью composer

Я использую Laravel 4.2.
Сегодня мне пришлось переустановить один из моих плагинов, и теперь весь мой проект был разрушен.
вот мой файл composer.json:

{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "4.2.*",
"barryvdh/laravel-debugbar": "~1.8",
"mews/captcha": "dev-master",
"prologue/alerts": "dev-master",
"yangqi/htmldom": "dev-master",
"scalia/sphinxsearch": "dev-master"},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/libraries",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"],
"post-create-project-cmd": [
"php artisan key:generate"]
},
"config": {
"preferred-install": "dist"},
"minimum-stability": "dev"}

Все, что я хотел сделать, это заменить плагин mews / captcha чем-то другим.

После реализации моего нового плагина капчи, я попытался обновить проект с помощью composer, используя «composer update».

Тогда я понял, что пролог / оповещения больше не поддерживают laravel 4.2, согласно ошибкам github и composer.

Problem 1
- Conclusion: don't install laravel/framework 4.2.x-dev
- Conclusion: don't install laravel/framework v4.2.17
- Conclusion: don't install laravel/framework v4.2.16
- Conclusion: don't install laravel/framework v4.2.15
- Conclusion: don't install laravel/framework v4.2.14
- Conclusion: don't install laravel/framework v4.2.13
- Conclusion: don't install laravel/framework v4.2.12
- Conclusion: don't install laravel/framework v4.2.11
- Conclusion: don't install laravel/framework v4.2.10
- Conclusion: don't install laravel/framework v4.2.9
- Conclusion: don't install laravel/framework v4.2.8
- Conclusion: don't install laravel/framework v4.2.7
- Conclusion: don't install laravel/framework v4.2.6
- Conclusion: don't install laravel/framework v4.2.5
- Conclusion: don't install laravel/framework v4.2.4
- Conclusion: don't install laravel/framework v4.2.3
- Conclusion: don't install laravel/framework v4.2.2
- Installation request for prologue/alerts dev-master -> satisfiable by prologue/alerts[dev-master].
- Conclusion: don't install laravel/framework v4.2.1
- Conclusion: don't install laravel/framework v4.2.0
- prologue/alerts dev-master requires illuminate/session ~5 -> satisfiable by laravel/framework[5.0.x-dev], illuminate/session[5.0.x-dev, 5.1.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.4].
- Can only install one of: laravel/framework[v4.2.0-BETA1, 5.0.x-dev].
- don't install illuminate/session 5.0.x-dev|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session 5.1.x-dev|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session v5.0.0|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session v5.0.22|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session v5.0.25|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session v5.0.26|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session v5.0.28|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session v5.0.4|don't install laravel/framework v4.2.0-BETA1
- Installation request for laravel/framework 4.2.* -> satisfiable by laravel/framework[4.2.x-dev, v4.2.0, v4.2.0-BETA1, v4.2.1, v4.2.10, v4.2.11, v4.2.12, v4.2.13, v4.2.14, v4.2.15, v4.2.16, v4.2.17, v4.2.2, v4.2.3, v4.2.4, v4.2.5, v4.2.6, v4.2.7, v4.2.8, v4.2.9].

Я не могу удалить плагин / плагин оповещений. Все, что я хочу, это восстановить мой проект, у меня есть старые коммиты / резервные файлы. Но композитор не позволяет мне.

Кроме того, попытался удалить пролог / оповещения из composer.json и другие свойства из app.php, но composer по-прежнему мне не помогает.

Ошибка «Класс« Пролог \ Alerts \ AlertsServiceProvider »не найден», что означает, что композитор пытался установить более новую версию пролога / предупреждений?

Заранее спасибо.

0

Решение

Ваша общая проблема заключается в том, что вы используете ветки вместо версий. В филиалах есть две основные проблемы:

  1. Они не указывают на отдельный код, который был зафиксирован время от времени, но являются движущейся целью, которая постоянно получает обновления.
  2. Они по своей природе имеют стабильность разработки, которая может быть приемлемым риском при использовании в качестве зависимости верхнего уровня в проекте, но создаст проблемы, если будет использоваться внутри пакета, который должен быть включен где-то еще.

Ответ @milz указывает на правильное направление, но вы должны пройти весь путь: для каждого используемого вами пакета замените каждую ссылку на ветку версией выпуска или диапазоном версий.

мяукает / CAPTCHA, — выпущенные версии 1.0.1, 2.0.0 и 2.0.1 — только 1.0.1 совместима с Laravel 4. Возможно, вы захотите использовать 1.0.* исправлять ошибки, хотя вряд ли они произойдут.

Пролог / оповещения — версии выпуска 0.1.0, 0.1.1, 0.2.0, 0.3.0 и 0.4.0. Версии 0.1 и 0.2 требуют Laravel 4.0, 0.3.0 допускает ЛЮБОЙ 4.x и 0.4.0 переходят на любую версию Laravel 5.0. Выбирать 0.3.*,

Янци / htmldom — нет выпущенных версий. Как бы трудно это ни было: вы должны избегать использования этого пакета, если сопровождающие не помечают версию выпуска. Он также не правильно указывает свои зависимости — он имеет зависимость от Laravel для поставщика услуг. Попросите сопровождающих пометить выпуск или переключиться на другой пакет. Этот пакет, вероятно, повторяет страдание, которое вы испытываете сейчас.

Scalia / sphinxsearch — Версии 0.1, 0.1.1 и 0.2 совместимы с Laravel 4 — pick 0.2.*,

Обратите внимание, что для всех версий вы можете подумать не только об исправлении ошибок, но и о совместимых обновлениях. Это изменит требование к версии с x.y.* в ~x.y, Я бы порекомендовал это.

Также обратите внимание, что в зависимости от того, какую версию главной ветки вы использовали, переключившись на помеченный релиз, вы можете вернуться к некоторым коммитам. Это может вернуть исправления ошибок, которые были переданы мастеру, но никогда не были помечены как релиз. Если вы обнаружите, что в пакете, который вы используете, есть невыпущенные исправления, вы должны также попросить сопровождающих выпустить эти исправления.

В зависимости от их скорости реакции и разрешения вашего запроса, вы можете принять решение продолжить использование этого пакета или переключиться на что-то другое.

2

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

Ну, вы можете взглянуть на список prologuephp / оповещения релизы. Если вы посмотрите на composer.json от v0.3.0 в 0.4.0-beta.1 вы увидите, что зависимости меняются от:

"illuminate/config": "~4",
"illuminate/session": "~4",
"illuminate/support": "~4",

Для того, чтобы:

"illuminate/config": "~5",
"illuminate/session": "~5",
"illuminate/support": "~5"

Итак, если ваш проект использует Laravel 4, вам просто нужно использовать правильную версию. В вашем composer.json, вместо "prologue/alerts": "dev-master", использование "prologue/alerts": "0.3.0".

3

Вот что я сделал до сих пор:

  1. Удален «пролог / оповещения»: «dev-master» из файла composer.json,
  2. в app / config / app.php, удалено
    Prologue \ Alerts \ AlertsServiceProvider, от провайдеров и
    ‘Alert’ => ‘Пролог \ Оповещения \ Фасады \ Оповещение’, из псевдонимов
  3. «Обновление композитора» из консоли.

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

0
По вопросам рекламы [email protected]