2016-08-16 39 views
1

我所有的代码都被分割成了bundle,这是我需要的composer.json。 现在我想用composer install安装整个项目,但是当我尝试一下,symfony的文件夹没有出现,我也得到了以下错误消息:有没有办法通过composer.json完成symfony3的安装?

[RuntimeException]                      
Could not scan for classes inside "app/AppKernel.php" which does not appear to be a file nor a folder 

有没有办法来请求symfony的安装档案?

这是我composer.json

{ 
"name": "mygloriousname", 
"license": "proprietary", 
"type": "project", 
"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" 
}, 
"require-dev": { 
    "sensio/generator-bundle": "^3.0", 
    "symfony/phpunit-bridge": "^3.0" 
}, 
"scripts": { 
    "post-install-cmd": [ 
     "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-update-cmd": [ 
     "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" 
    ] 
}, 
"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" 
    } 
} 
} 

回答

1

我想你要找的是create-project

这是你如何安装Symfony via composer

composer create-project symfony/framework-standard-edition my_project_name 

此命令执行以下步骤:

  1. 采取项目symfony/framework-standard-edition从packagist
  2. 下载库:https://github.com/symfony/symfony-standard
  3. 运行那个新下载的项目中的composer install

编辑:显然,对于您的使用情况,您必须将symfony/framework-standard-edition替换为您的项目标识符,并将其放在packagist,您自己的作曲家资源库(例如,与Toran Proxy)或register the repository在您的全局作曲家配置。

通常可以找到几个更多的示例作为某种骨架应用程序的一部分。

虽然这是可行的,但它并不是因为一个很好的原因而部署应用程序的首选方式。你不能只更新一个像这样的项目,而只能替换现有的项目,这会导致停机或需要一些符号链接 - 杂耍,甚至有一些缺点。此外,您还需要运行所有初始设置步骤,例如每次指定数据库连接信息。你可以解决这个问题(或者手动输入所有这些参数),但是有一个真实的部署工具,例如使用ansible将是这样一个场景中更好的选择。

+0

create-project命令不是我搜索的那个,因为我无法安装在非空目录中。所以作曲家无法阅读我的composer.json。 Ansible有点制服为我的项目:) 所以我必须检查整个symfony的结构(排除'.gitignore'文件转换成饭桶。 我有一口复制安装完成后的配置文件。 但是,感谢您的详细解答 – WebCyclone

+0

这是我在最后一段中试图解释的问题:composer是_just_,用于安装依赖关系,而不是用于部署项目,我所描述的是设置项目的有限方式,但这已经在影响作曲家的目的了,更新一个已经存在的项目 - 就像你想做的那样 - 需要在作曲家中进行大量的修改,因为它需要它没有设置的任务,在简单的情况下,你可以改为如果项目由git管理,请执行'git pull'。更常见的情况是使用部署工具:http://www.phptherightway.com/#deployment-tools。 – dbrumann

+0

这比您想象的更复杂的原因是,有时在更新项目时,除了下载新文件外,还有其他任务涉及到。例如,您可能必须重新启动其他服务,清除缓存(不仅仅是作曲者缓存,例如在数据库或redis/memcached中),可能会使会话无效。那些只是我头脑中的那些。还有更多。他们中的大多数都需要对应用程序有更深入的了解,并且是非常具体的项目,他们通常必须按照正确的顺序运行。这不是作曲家的范围。这就是为什么它很难。 – dbrumann

相关问题