如何使用PHP控制台Symfony2的

问题描述:

我发现控制台像这样运行:如何使用PHP控制台Symfony2的

[email protected]:/var/www/sandbox/hello# php console 
Symfony version 2.0.0-DEV - hello 

Usage: 
    Symfony [options] command [arguments] 

Options: 
    --help  -h Display this help message. 
    --quiet  -q Do not output any message. 
    --verbose -v Increase verbosity of messages. 
    --version -V Display this program version. 
    --color  -c Force ANSI color output. 
    --no-interaction -n Do not ask any interactive question. 
    --shell  -s Launch the shell. 

Available commands: 
    help    Displays help for a command (?) 
    list    Lists commands 
assets 
    :install   
bundle 
    :pharize   
container 
    :graphviz   
doctrine 
    :generate-proxies 
init 
    :application  
    :bundle    
router 
    :debug    Displays current routes for an application 
    :dump-apache  

但我不能运行任何的命令。我想是这样的:

PHP控制台的Symfony -h

,但我得到

[InvalidArgumentException]   
Command "Symfony" is not defined. 

有什么建议?

找到自己的答案。

[email protected]:/var/www/sandbox/hello# chmod 777 /var/www/sandbox/src/Bundle 
[email protected]:/var/www/sandbox/hello# php console init:bundle "Bundle\\ValugiBundle" 
+1

该语法看起来不正确。你应该从根目录执行命令,而不是在应用程序文件夹内。 – xaav 2011-05-16 00:30:25

+0

这是大约一年前... symfony是真的测试版 – 2011-05-18 07:03:34

从应用程序根:./app/console --shell

控制台使用这样的:$ php app/console [command name]

使用以下方法来创建一个新的Symfony2包:

php app/console init:bundle Acme\\DemoBundle src 

这将创建一个新的软件包在此目录结构的src中:

src/Acme/DemoBundle/ 
        AcmeDemoBundle.php 
        Controller/ 
           DefaultController.php 
        Resources/ 
           config/ 
            routing.yml 
           views/ 
            Default/ 
              index.html.twig 

和命名空间将是Acme\DemoBundle

我把a bash script放在一起,通过允许您的项目中的任何地方轻松访问CLI工具来实现这一点。下载它,使其可执行并放入PATH(例如/ usr/local/bin /)。

然后,您不需要在您的项目的根目录中找到CLI工具。只需开除sf <command>。它适用于Symfony 1.3/1.4和Symfony2。

我试着投下你自己的答案,但我没有足够的代表它!

-

塞尔吉和确定准确的回答你,但因为你是我的情况下,任何人读这是扩大混淆。

你需要使用“php console Symfony”,因为你不会让文件夹名称变得简单。

我喜欢从我的家庭文件夹工作。我总是从这里开始,每当我登录,所以我创建自己的文件夹在我的家乡,如:
~/web/sandbox.sf2

,那么你可以使用符号链接到/ var/WWW一样:
sudo ln -s ~/web/sandbox.sf2/home/myusername/web/sandbox.sf2

所以当你的工作在你的文件上,你会知道你已经在一个symfony2项目中。 (我也想到了,起初使用它很奇怪,但我已经习惯了它,并且使用了Tobias同样的答案,例如bin脚本来将应用程序/控制台包装为sf2 init:bundle和sf list )

您显然也有用户权限问题(http://google.com/search?q=linux+permissions,第二个结果看起来不错)。

确保您作为用户/组可以编辑您的文件和文件夹。 php应用程序/控制台以您使用的用户身份运行(在本例中为root)。 还要确保Apache用户/组可以读取您的文件。

-

并请,不要使用root帐户和chmod 777 -R当事情不工作。如果您要将Web服务器暴露给万维网,请测试简单的所有权许可,这是一种简单且必要的概念。

+0

大家1年半前在哪里?这篇文章是关于非常非常beta的Symfony2。 – 2011-08-29 19:50:43

+0

由于它是sf2的测试版,您可以随时删除此问题,因为没有人会遇到此问题。 – bksunday 2011-09-08 04:30:08