Symfony DistributionBundle. Could not open input file: app/console.

Обновляя свою Siteforever CMS до версии 0.8, в которой ядро уже работает на ядре Symfony 2.8, столкнулся с проблемой. Как это выглядит, можно посмотреть на Travis CI. При выполнении composer install получаю ошибку:

  An error occurred when executing the "'cache:clear --no-warmup'" command:  

  Could not open input file: app/console   

Ошибка вызвана post-install-cmd скриптом Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache.

Дело в том, что Symfony 2.8 может работать с путями как в стиле 2.x, так и в стиле 3.x. Второй вариант мне нравится больше и версия CMS 0.8 именно его и использует. Т.е. console она должна искать в папочке bin. Для этого в файл composer.json надо прописать параметр:

  "extra": {
    "symfony-bin-dir": "bin",
  },

Но, почему-то эта настройка не помогает заставить работать DistributionBundle нормально.

Чтобы понять, в чем причина, пришлось открыть исходники ScriptHandler и искать косяк в полевых условиях.

На деле оказалось, что для проверки, использовать ли новую структуру папок, обработчик использует такую функцию:

    /**
     * Returns true if the new directory structure is used.
     *
     * @param array $options Composer options
     *
     * @return bool
     */
    protected static function useNewDirectoryStructure(array $options)
    {
        return isset($options['symfony-var-dir']) && is_dir($options['symfony-var-dir']);
    }

Т.е. ему нужно:

  1. Указать, как называется папка, в которой будут лежать временные данные;
  2. Эта папка должна уже быть создана в файловой системе.

Так и поступим. Создадим папку var и положим в нее файл .gitignore с таким содержимым:

logs
cache
*.cache

А в composer.json пропишем все переменные по своему вкусу:

  "extra": {
    "symfony-app-dir": "app",
    "symfony-web-dir": "./",
    "symfony-bin-dir": "bin",
    "symfony-var-dir": "var",
    "incenteev-parameters": {
      "file": "app/config/parameters.yml",
      "dist-file": "app/config/parameters.yml.dist"
    }
  }

Вот такое странное поведение и вот такое неожиданное решение ожидало меня сегодня. Желаю всем, кто столкнется с такой же проблемой в будущем не тратить пол деня на поиск досадной причины.


Создано:
Автор:
« Назад на главную

comments powered by Disqus
Fork me on GitHub