Ответы пользователя по тегу Composer
  • Как установить и пользоваться Composer в PhpStorm?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Установить Composer глобально в системе. Идем сюда, выбираем инструкцию под свою операционную систему и устанавливаем.
    2. Используем терминал для работы с composer и проверки что все ок. Если не знаете что такое терминал - гуглите под свою операционную систему. С помощью того же терминала выясняем путь к исполняемому файлу composer (опять же, если не знаете как - гуглите).
    3. Когда проверено, что composer работает в терминале, идем в PhpStorm, открываем Settings -> Languages & Frameworks -> PHP -> Composer и там указываем путь к 'composer' executable (который мы посмотрели в предыдущем шаге) и путь к composer.json (это будет в корне вашего проекта).

    Если какой-то из терминов / шагов непонятен - гугл в помощь. Composer и вся эта кухня штука достаточно простая, но если у вас Windows, совсем нету опыта работы с командной строкой то первые шаги будут со скрипом - и это нормально. Не парьтесь. Разбивайте подобные "задачи" на вот такие мелкие шаги, последовательно изучайте каждый из них, и очень скоро у вас все будет работать. In no time.
    Ответ написан
    Комментировать
  • Что такое extra в Composer json?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    https://getcomposer.org/doc/04-schema.md#extra


    Arbitrary extra data for consumption by scripts.
    This can be virtually anything.
    Optional.


    Простым языком - это секция, в которой можно устанавливать свои кастомные параметры, которые будут использоваться вашими скриптами или надстройками для Composer. Например, есть плагин composer/installers, позволяющий устанавливать пакеты не в vendor, а по нужным путям для разных платформ/CMS. Он использует секцию extra для конфигурации этих путей. Например, для WordPress у меня это выглядит вот так:

    {
      "extra": {
        "wordpress-install-dir": "core",
        "installer-paths": {
          "app/{$name}": ["type:wordpress-dropin"],
          "app/mu-plugins/{$name}": ["type:wordpress-muplugin"],
          "app/plugins/{$name}/": ["type:wordpress-plugin"],
          "app/themes/{$name}/": ["type:wordpress-theme"]
        }
      }
    }
    Ответ написан
    4 комментария
  • Как откатить изменения в composer зависимостях?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Composer install устанавливает конкретные версии из composer.lock (если он присутствует). У вас видимо его не было, либо все-таки вы выполнили composer update.

    Если есть старый composer.lock - просто положите его в проект, удалите ненужное и сделайте composer install.

    Если старого composer.lock нету - отредактируйте composer.json, укажите в нем нужные version constraints.

    ЗЫ: Во избежание подобных ситуаций composer.lock должен коммититься в git репозиторий.
    Ответ написан
    3 комментария
  • Почему такая ошибка "Your requirements could not be resolved to an installable set of packages."?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Конфликт версий зависимостей, между собой. Удалите composer.lock и установите (или укажите вручную в composer.json) совместимые версии согласно рекомендациям (весь лог не читал и не вникал, но по ходу doctrine/doctrine-orm-module просит более старую версию zendframework/zend-hydrator).
    Ответ написан
    Комментировать
  • Почему нельзя запускать composer install под рутом?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Включаем простую логику - под рутом любой скрипт выполняется с полным доступом к телу, включая возможность выполнять деструктивные операции не переспрашивая разрешения у наивного пользователя. Так? Так.

    Дальше - Композером мы ставим сторонний код, хрен знает что там в том коде (вы же не проверяете лично все пакеты, а потом рекурсивно их зависимости, и зависимости их зависимостей). Поэтому так делать - ай-яй-яй-апасность. Рискованно. О чем Композер как бы намекает.

    К тому же, вообще делать что-либо рутом на сервере - плохая практика. Именно по тем же причинам - чтобы по старинке не копипастнуть какой-нибудь код из этих ваших интернетов в командную строку - а дальше как в комменте FanatPHP про классику.

    Должен быть отдельный пользователь, которым вы коннектитесь, и у него - права sudo. Использовать эти права только в крайних случаях, когда они реально нужны.
    Ответ написан
    Комментировать
  • Как подключить пакет из бибекета в композер?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    "repositories": [
     {
       "type": "vcs",
       "url":  "git@bitbucket.org:user/repository-name.git"
     }
    ],
    "require": {
      "user/repository-name": "dev-master"
    },


    Если репа приватная – читать тут (и менять адрес репы с git@bitbucket.org на https).
    Ответ написан
    Комментировать
  • С какими ключами запускать "composer install" на продакшн?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Level 1: dump-autoload -o и --optimize-autoloader это одно и то же.
    Level 2A: dump-autoload -a и --classmap-authoritative это одно и то же.
    Level 2B: dump-autoload -acpu и --apcu-autoloader это одно и то же.

    Используется либо Level 1, либо Level 2A, либо Level 1 + Level 2B (как в вашем случае). Для прода лучше 2A или 1+2B.
    Ответ написан
    Комментировать