Как вернуть обновление composer?

сегодня я побежал composer update и обновление полностью сломало мой сайт. Я нашел в php.журнал следующую информацию:

72.15.153.139 - - [11 / Nov/2015:21:01:45 -0500] "GET / HTTP / 1.1" 500 - " - "" Mozilla/5.0 (Windows NT 6.1; WOW64; rv: 42.0) Gecko / 20100101 Firefox / 42.0" [Ср. 11 ноя 21: 01: 48 2015] [ошибка] [клиент 127.7.179.129] ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданная "функция" (T_FUNCTION), ожидающий идентификатор (T_STRING) или (T_NS_SEPARATOR) в /var/lib/openshift/55c481747628e14556000188/app-root/runtime/repo/config/vendor/danielstjules/stringy/tests/CreateTest.php on line 5 72.15.153.139 - - [11 / ноябрь/2015:21:01:48 -0500] "GET / HTTP / 1.1" 500 - " - ""Mozilla / 5.0 (Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0"

кажется, что" danielstjules/stringy " - это тот, кто виноват. Но как я могу вернуться к более старой версии (или использовать новостную версию?) этого пакета? Я попытался изменить композитора.файл блокировки, и изменился

            "require": {
            "danielstjules/stringy": "~1.8",

to

        "require": {
            "danielstjules/stringy": "~1.9",

и работать composer update снова, но он дал информацию:

загрузка репозиториев composer с информацией о пакете Обновление зависимостей (включая require-dev) Нечего устанавливать или обновлять Запись файла блокировки Создание файлов автозапуска Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданная "функция" (T_FUNCTION), ожидающий идентификатор (T_STRING) или (T_NS_SEPARATOR) в /var/lib/openshift/55c481747628e14556000188/app-root/runtime/repo/config/vendor/danielstjules/stringy/tests/CreateTest.php on line 5 Скрипт php artisan clear-скомпилированная обработка события post-update-cmd, возвращенного с ошибкой

[исключение RuntimeException] Вывод ошибки: Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданная "функция" (T_FUNC TION), ожидая идентификатор (T_STRING) или (T_NS_SEPARATOR) в /var / lib/o penshift/55c481747628e14556000188 / app-root/время выполнения/РЕПО/конфигурация/поставщик / danie lstjules / stringy/тесты / CreateTest.php on line 5

как я могу откатить этот пакет? Спасибо.

EDIT 2:

composer install изменить composer.lock автоматически. Я изменил composer.json вместо этого, и он успешно извлек старую версию 1.8.

но сборка все равно не удалась. описание этой проблемы имел основания. Но после того, как я ... --7-->, в проблема все еще существовала.

EDIT 3:

я попробовал следующий:

  1. rm -rf vendor/
  2. composer update

проблема исчезла.

2 ответов


при проверке спецификация версии composer документация, the ~ оператор получает последнюю версию, которая обратно совместима в соответствии с принципами семантическое управление версиями. Это значит, что ~1.8 эквивалентно >=1.8 <2.0.0, а также ~1.9 это то же самое, что >=1.9 <2.0.0. Другими словами,~1.8 вернет то же самое, что и ~1.9 если последняя версия >=1.9. Если вы действительно хотите использовать версии 1.8, просто делать это:

"danielstjules/stringy": "1.8",

это получит именно версию 1.8. Конечно, вам нужно бежать composer update далее.

я найти композитора синтаксис версий сложно себе помню.


как отменить обновление? Легко: восстановить composer.lock файл из вашей системы управления версиями, который использовался до обновления.

на composer.lock точно записывает, какое программное обеспечение было установлено. Поэтому важно зафиксировать этот файл в системе управления версиями, чтобы иметь возможность вернуться к рабочей версии в случае сбоя обновления.

под управлением composer install всегда будет устанавливать версии программного обеспечения, записанные в composer.lock, Он будет действовать только как update если этот файл не подарок.