首页 文章

新的Symfony 3安装:无法打开输入文件:composer install中的app / console

提问于
浏览
20

我通过官方的symfony-installer(http://symfony.com/download)安装了一个新的symfony3-instance . 在完成第一件事之后,我将项目提交给Git,并在另一天在另一台计算机上克隆它 . 克隆后,我运行"composer install"来安装所有symfony-dependencies . 现在出现了问题:脚本 ScriptHandler::clearCache 因错误而停止: Could not open input file: app/console . 这是正确的 - symfony3有一个新的目录结构 - 所以 console 现在位于 /bin - 而不是 /app . 如何告诉作曲家/项目使用新结构而不是旧结构呢?

我在这里阅读(What is the new Symfony 3 directory structure?)有关控制台命令 SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true - 但这在我的情况下不起作用 .

有小费吗?

3 回答

  • 18

    ScriptHandlercomposer.json 文件名中的额外配置键的目录作为 symfony-bin-dir . 因此,请检查作曲家是否包含正确的配置键,例如:

    composer.json

    ....
    "extra": {
        "symfony-app-dir": "app",
        "symfony-bin-dir": "bin",
        "symfony-var-dir": "var",
        ....
    

    编辑:

    问题与作曲家的缓存有关 . 解决了以下命令解决它:

    >php composer.phar clear-cache
    

    希望这可以帮助 .

  • 38

    只需创建 var 目录 . 之后_106363_和 composer update 将正常工作 .

    Explanation:

    vendor/sensio/distribution-bundle/Composer/ScriptHandler.php:462

    protected static function useNewDirectoryStructure(array $options)
    {
        return isset($options['symfony-var-dir']) && is_dir($options['symfony-var-dir']);
    }
    

    因此,您需要在 composer.jsonextra 中拥有 symfony-var-dir 并且此目录已存在 .

  • 8

    我遇到了同样的问题 . 该脚本使用var目录的存在来决定是使用新目录结构还是使用旧目录结构 . 如果var存在,则使用新的目录结构 . 否则它使用旧结构 .

    默认的.gitignore文件可以防止将var目录和bin目录添加到git中 .

    我为解决这个问题所做的是在项目目录中编辑.gitignore,使它看起来像这样:

    /app/config/parameters.yml
    /bin/*
    /build/
    /composer.phar
    /vendor/
    /web/bundles/
    /var/*
    !var/cache
    /var/cache/*
    !var/cache/.gitkeep
    !var/logs
    /var/logs/*
    !var/logs/.gitkeep
    !var/sessions
    /var/sessions/*
    !var/sessions/.gitkeep
    !bin/console
    !bin/symfony_requirements
    /phpunit.xml
    

    我不假装是.gitignore的专家,所以我不确定这是最优雅的做法,但它对我有用 .

相关问题