【问题标题】:Troubleshooting "require_once(../bootstrap.php.cache): failed to open stream: No such file or directory"疑难解答“require_once(../bootstrap.php.cache):打开流失败:没有这样的文件或目录”
【发布时间】:2012-08-11 02:04:32
【问题描述】:

我正在尝试重新部署我一直在处理的 Symfony 2.1x 项目,而 app_dev.php 失败了,因为它找不到 app/bootstrap.php.cache。由于我使用了 Symfony2 的推荐 .gitignore 文件,所以在项目的 git 存储库中省略了这个文件:

# .gitignore
/app/bootstrap*

我认为app/bootstrap.php.cache 是在$ php composer.phar install 过程中生成的是否正确?如果是这种情况,那么我将为您提供我的composer.json

// composer.json
{
    "name": "symfony/framework-standard-edition",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": { "": "src/" }
    },
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "2.1.*",
        "doctrine/orm": "2.2.*",
        "doctrine/doctrine-bundle": "dev-master",
        "twig/extensions": "dev-master",
        "symfony/assetic-bundle": "dev-master",
        "symfony/swiftmailer-bundle": "dev-master",
        "symfony/monolog-bundle": "dev-master",
        "sensio/distribution-bundle": "dev-master",
        "sensio/framework-extra-bundle": "dev-master",
        "sensio/generator-bundle": "dev-master",
        "jms/security-extra-bundle": "1.1.*",
        "jms/di-extra-bundle": "1.0.*",
        "ddeboer/guzzle-bundle": "dev-master",
        "mopa/bootstrap-bundle": "dev-master",
        "twitter/bootstrap": "master",
        "knplabs/knp-paginator-bundle": "dev-master",
        "knplabs/knp-menu-bundle": "dev-master",
        "craue/formflow-bundle": "dev-master"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "version": "master",
                "name": "twitter/bootstrap",
                "source": {
                    "url": "https://github.com/twitter/bootstrap.git",
                    "type": "git",
                    "reference": "master"
                },
                "dist": {
                    "url": "https://github.com/twitter/bootstrap/zipball/master",
                    "type": "zip"
                }
            }
        }
    ],
    "scripts": {
        "post-install-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ],
        "post-update-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ],
        "post-install-cmd": [
            "Mopa\\Bundle\\BootstrapBundle\\Composer\\ScriptHandler::postInstallSymlinkTwitterBootstrap"
        ],
        "post-update-cmd": [
            "Mopa\\Bundle\\BootstrapBundle\\Composer\\ScriptHandler::postInstallSymlinkTwitterBootstrap"
        ]
    },
    "config": {
        "bin-dir": "bin"
    },
    "minimum-stability": "dev",
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web"
    }
}

如何生成bootstrap.php.cache

【问题讨论】:

  • 首先你应该检查你是否对你的文件和文件夹有正确的权限。
  • 缓存文件随 symfony 一起提供。你检查过你的应用目录吗?你有没有把它删掉? app_dev.php 中的路径是否指向正确的目录?应用/控制台是否有效?
  • 我确实删除了目录的内容,然后尝试将项目从其 git 存储库重新部署回其中。如果bootstrap.php.cache 不打算在仓库中,它如何在从 git 部署后添加回项目中?我仍然认为它是在作曲家安装过程中完成的,但如果有人知道更好,请赐教。

标签: symfony-2.1


【解决方案1】:

只需转到您的项目并使用 composer 生成它

php /path/to/composer/composer.phar install

【讨论】:

  • 在运行此命令之前稍等片刻:您真的要更新您的供应商吗? composer.phar install 命令将创建您正在寻找的缺少的 bootstrap.php.cache 文件,并且不会修改您的供应商版本。
  • 你可能想要composer update --lock,因为它确实触发了后步骤,但实际上并没有更新任何依赖项。
【解决方案2】:

只需运行以下命令。

php composer.phar install

来源: http://symfony.com/doc/master/book/performance.html#use-bootstrap-files

【讨论】:

    【解决方案3】:

    您已经复制了 post-install-cmdpost-updated-cmd,而您应该已将 MopaBootstrapBundle 脚本添加到现有密钥。尝试以下 composer.json 并重新运行php composer.phar install

    {
        "name": "symfony/framework-standard-edition",
        "description": "The \"Symfony Standard Edition\" distribution",
        "autoload": {
            "psr-0": { "": "src/" }
        },
        "require": {
            "php": ">=5.3.3",
            "symfony/symfony": "2.1.*",
            "doctrine/orm": "2.2.*",
            "doctrine/doctrine-bundle": "dev-master",
            "twig/extensions": "dev-master",
            "symfony/assetic-bundle": "dev-master",
            "symfony/swiftmailer-bundle": "dev-master",
            "symfony/monolog-bundle": "dev-master",
            "sensio/distribution-bundle": "dev-master",
            "sensio/framework-extra-bundle": "dev-master",
            "sensio/generator-bundle": "dev-master",
            "jms/security-extra-bundle": "1.1.*",
            "jms/di-extra-bundle": "1.0.*",
            "ddeboer/guzzle-bundle": "dev-master",
            "mopa/bootstrap-bundle": "dev-master",
            "twitter/bootstrap": "master",
            "knplabs/knp-paginator-bundle": "dev-master",
            "knplabs/knp-menu-bundle": "dev-master",
            "craue/formflow-bundle": "dev-master"
        },
        "repositories": [
            {
                "type": "package",
                "package": {
                    "version": "master",
                    "name": "twitter/bootstrap",
                    "source": {
                        "url": "https://github.com/twitter/bootstrap.git",
                        "type": "git",
                        "reference": "master"
                    },
                    "dist": {
                        "url": "https://github.com/twitter/bootstrap/zipball/master",
                        "type": "zip"
                    }
                }
            }
        ],
        "scripts": {
            "post-install-cmd": [
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
                "Mopa\\Bundle\\BootstrapBundle\\Composer\\ScriptHandler::postInstallSymlinkTwitterBootstrap"
            ],
            "post-update-cmd": [
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
                "Mopa\\Bundle\\BootstrapBundle\\Composer\\ScriptHandler::postInstallSymlinkTwitterBootstrap"
            ]
        },
        "config": {
            "bin-dir": "bin"
        },
        "minimum-stability": "dev",
        "extra": {
            "symfony-app-dir": "app",
            "symfony-web-dir": "web"
        }
    }
    

    【讨论】:

    • 这绝对是问题的一部分,我感谢你。
    【解决方案4】:

    在我的例子中,我的作曲家版本是 2.x,所需的版本是 1.x 所以,首先我需要降级到版本 1,然后我运行 composer install

    sudo composer self-update --1 && composer install -v --prefer-dist
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      相关资源
      最近更新 更多