直到几天前,才有可能使用new (Symfony 3) directory structure创建一个新的Symfony项目。运行composer create-project symfony/framework-standard-edition path/ "2.5.*"
时,Composer会询问以下问题:
您想使用Symfony 3目录结构吗? [Y / N]
新结构提供了一些改进,例如console
从app
目录移动到bin
目录,phpunit.xml.dist
从app
移出}目录到根目录。缓存和日志目录已移至新的var
目录。
请查看this answer(由我撰写)以获取完整的更改列表。
但是,全新安装的标准发行版不再提供此选项。这似乎是问题has been removed on July 16th,因为新的目录结构造成了太多的混乱,特别是对于新用户。另见this issue on GitHub。
是否仍然可以使用新目录结构创建项目?
答案 0 :(得分:17)
仍然可以触发问题,并将项目转换为新的目录结构。 (但仅在您创建新项目时,即运行composer create-project
)
为此,您需要将SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE
环境变量设置为true
。这可以通过将SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true
添加到Composer命令来完成。
因此,要创建新项目,请在终端中运行以下命令:
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true composer create-project symfony/framework-standard-edition path/ "2.5.*"
并且Composer会询问您是否需要新的目录结构。
正如barius在评论中所述,此功能已从每版本2.7.5的Symfony标准版中删除。如果你真的想使用Symfony 3结构,你可以通过两个步骤安装Symfony来获得它:
symfony/symfony
包的版本约束,这样您仍然可以获得最新版本。因此,从命令行执行以下命令:
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true composer create-project symfony/framework-standard-edition project-directory/ "2.6.*"
cd project-directory
composer require symfony/symfony ^2.7
注意:我实际上并不推荐这个,因为这是not the official recommended way to create a new Symfony project。因此,除非您真的知道自己在做什么,否则只需使用Symfony Installer创建新项目。
答案 1 :(得分:6)
要在symfony2(> = 2.5)中创建新的symfony3目录结构,您必须执行以下操作:
打开shell /命令提示符并运行follwoing命令来设置临时environment variable:
的Linux:
export SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true
窗口:
set SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true
创建新的symfony3目录结构的问题是在设置环境变量后开箱即用
要从任何2.7和2.8版本创建新的目录结构,必须执行以下步骤:
安装所需的2.7及更高版本(使用2.7和2.8测试),目前安装2.7.7
composer create-project symfony/framework-standard-edition myproject "2.7.*"
然后修改composer.json
并添加update-directory-structure
:
composer.json:
--- snip ---
"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"
],
"update-directory-structure": [
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::defineDirectoryStructure"
]
},
--- snip ---
之后才运行
composer run-script update-directory-structure
回答'y',你就完成了:
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::defineDirectoryStructure
Would you like to use Symfony 3 directory structure? [y/N]
现在位于console
的{{1}}文件必须进行调整:
变化
bin/console
到
$loader = require __DIR__.'/autoload.php';
然后将以下方法添加到文件$loader = require __DIR__.'/../app/autoload.php';
中的AppKernel
类:
app/appKernel.php
更新:knp university article about migrating to the new directory stucture
币: @davil
答案 2 :(得分:4)
Symfony3 BETA1版现已发布,
因此,您可以直接使用composer来安装新的symfony3版本。
如果您尚未安装,请先关注Installing Composer。
然后打开终端并输入以下命令:
composer create-project symfony/framework-standard-edition symfony3 "v3.0.0-BETA1"
注意:此处symfony3
是将要创建的项目或目录的名称,您可以更改它。
<强>更新强> Symfony 3.0是稳定的当前版本,因此可以按照Official guide中的说明直接安装它。按照它进行最新版本安装。
composer create-project symfony/framework-standard-edition my_project_name
您可以查看这些链接,
What is the new Symfony 3 directory structure?
由Are your favorite bundle ready for #Symfony3? 发布的