【问题标题】:New Symfony 3 installation: Could not open input file: app/console in composer install新的 Symfony 3 安装:无法打开输入文件:作曲家安装中的 app/console
【发布时间】:2016-03-15 21:27:02
【问题描述】:

我通过官方的 symfony-installer (http://symfony.com/download) 安装了一个新的 symfony3-instance。完成第一件事后,我将项目提交给 Git,并在前几天将其克隆到另一台计算机上。 克隆后我运行“composer install”来安装所有的 symfony 依赖项。 现在问题来了:脚本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 的信息 - 但这在我的情况下不起作用。

有什么建议吗?

【问题讨论】:

  • 只有在克隆项目后才会出现问题吗?你能比较一下新的 Symfony3 和克隆的项目吗?
  • 我认为您可能在初次安装后更改了 composer.json 文件。如果找不到 bin/console,则需要重新开始。即使清除缓存有帮助。

标签: php composer-php symfony


【解决方案1】:

我遇到了同样的问题:

[RuntimeException]
An error occurred when executing the ""cache:clear --no-warmup"" command:

Could not open input file: app/console

我的控制台文件也在 /bin/ 文件夹中,所以每次我从 DevOps 克隆项目时,我都必须从项目的根目录调用它以清除缓存:

php bin/console cache:clear

之后我可以运行composer install,它工作正常

【讨论】:

    【解决方案2】:

    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
    

    希望这会有所帮助。

    【讨论】:

    • 嗨@cklm 可能是与作曲家缓存有关的问题?尝试通过命令php composer.phar clear-cache 删除作曲家缓存
    • 非常感谢 - 清除作曲家缓存(为什么?!)解决了我的问题!
    【解决方案3】:

    只需创建var 目录。之后composer installcomposer update 就可以正常工作了。

    说明:

    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 并拥有此目录。

    【讨论】:

    • 我可以确认:当 var 丢失 => 无法在 composer install 中打开应用程序/控制台。创建var 对我有用。
    • 也为我做了诀窍。从 3.3 更新到 3.4 后经历过这种情况,但我不知道为什么,以前从未发生过......
    【解决方案4】:

    我也遇到了同样的问题。该脚本使用 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 方面的专家,所以我不确定这是最优雅的做法,但它对我有用。

    【讨论】:

      猜你喜欢
      • 2017-12-26
      • 1970-01-01
      • 2017-08-13
      • 2014-10-12
      • 1970-01-01
      • 2015-03-02
      • 2021-03-08
      • 2023-03-03
      • 2018-03-20
      相关资源
      最近更新 更多