整天将我的应用程序部署到heroku,但每次都会抛出错误。我全都没有线索,并且有一个非常愤怒的客户。
当我尝试使用命令git push heroku master
将项目添加到heroku时,每个事情都很好,直到需要清除缓存。
Updating the "app/config/parameters.yml" file
remote: > Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap
remote: > Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache
remote: Could not open input file: app/console
remote: Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the symfony-scripts event terminated with an exception
remote:
remote:
remote: [RuntimeException]
remote: An error occurred when executing the "'cache:clear --no-warmup'" command:
remote: Could not open input file: app/console
remote: .
您会认为,它与此git issue
相同也是一个已知的问题,我正在使用错误的映射类型。
但我认为没关系。
我更新了我的作曲家并清除了作曲家的缓存
当我用p hp bin/console cache:clear
清除缓存时,一切都很好!
我遵循了this教程 并从symfony网站获得了一些辅助信息。
还找到了这个stack - 解释了发生了什么,但这仍然无法解决我的问题。
也许它在我的作曲家文件中的某个地方,或者我的git忽略了。 但是,我已经不知道了。
{
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
"psr-4": { "": "src/" },
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},
"autoload-dev": {
"psr-4": { "Tests\\": "tests/" }
},
"require": {
"php": ">=5.5.9",
"symfony/symfony": "3.1.*",
"doctrine/orm": "^2.5",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2",
"symfony/swiftmailer-bundle": "^2.3",
"symfony/monolog-bundle": "^2.8",
"symfony/polyfill-apcu": "^1.0",
"sensio/distribution-bundle": "^5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "^2.0",
"friendsofsymfony/user-bundle": "~2.0@dev",
"symfony/assetic-bundle": "^2.8",
"stfalcon/tinymce-bundle": "2.0",
"egeloen/ckeditor-bundle": "^4.0",
"whiteoctober/tcpdf-bundle": "^1.0",
"gregwar/captcha-bundle": "^2.0"
},
"require-dev": {
"sensio/generator-bundle": "^3.0",
"symfony/phpunit-bridge": "^3.0"
},
"scripts": {
"symfony-scripts": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
],
"post-install-cmd": [
"@symfony-scripts"
],
"post-update-cmd": [
"@symfony-scripts"
],
"compile": [
"rm web/app_dev.php",
"bin/console cache:clear",
"bin/console assetic:dump"
]
},
"config": {
"platform": {
"php": "5.5.9"
}
},
"extra": {
"symfony-app-dir": "app",
"symfony-bin-dir": "bin",
"symfony-var-dir": "var",
"symfony-web-dir": "web",
"symfony-tests-dir": "tests",
"symfony-assets-install": "relative",
"incenteev-parameters": {
"file": "app/config/parameters.yml"
},
"branch-alias": {
"dev-master": "3.1-dev"
}
}
}
答案 0 :(得分:1)
您已将Symfony 2应用升级为3。
但仅仅改变composer.json
中的要求是不够的。
结构发生了变化,所以你需要先用Symfony 3创建一个全新的应用程序,然后将旧的Symfony 2应用程序移动到新的Symfony 3应用程序中,按照作曲家的要求捆绑捆绑,编写作者要求。
这样您就可以确定您的应用在版本3上运行良好。
如果您尝试简单地从Symfony 2应用程序升级需求,那么您将创建大量错误,因为脚本已更改,结构已更改,需求已更改...
唯一安全的方法是启动一个新的Symfony 3项目,然后将旧的Symfony 2移植到其中。
答案 1 :(得分:1)
对我有用的解决方案。 New Symfony 3 installation: Could not open input file: app/console in composer install
说明:
这就是我猜的。当您将代码推送到Heroku时,平台会在/tmp
目录上编译项目文件。当Heroku编译代码时,如果你没有var
目录,会发生什么?会发生什么是Symfony创建了一个新的:
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']);
}
然后当Heroku将您的新代码移动到/app
目录时,Symfony配置仍指向旧展示位置/tmp
,但现在删除/tmp
处的文件!
答案 2 :(得分:0)
我看了一下你的github存储库。看起来它是Symfony3格式,所以我不确定发生了什么。我想尝试一下,但我不确定它是否会起作用。
尝试手动编辑composer.json文件以添加bin目录:
"config": {
"bin-dir": "bin",
"platform": {
"php": "5.5.9"
}
},
然后看看是否能解决问题。
编辑#2
现在还原这些更改并试一试:
"extra": {
"symfony-app-dir": "bin",
"symfony-bin-dir": "bin",
"symfony-var-dir": "var",
换句话说,将app目录更改为“bin”。