如何在 Symfony2 中使用 php 控制台

Posted

技术标签:

【中文标题】如何在 Symfony2 中使用 php 控制台【英文标题】:How to use php console in Symfony2 【发布时间】:2011-02-26 03:30:02 【问题描述】:

我找到了控制台并像这样运行它:

root@valugi-laptop:/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.  

有什么建议吗?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

来自应用根目录:./app/console --shell

【讨论】:

【参考方案3】:

给自己找个答案。

root@valugi-laptop:/var/www/sandbox/hello# chmod 777 /var/www/sandbox/src/Bundle
root@valugi-laptop:/var/www/sandbox/hello# php console init:bundle "Bundle\\ValugiBundle"

【讨论】:

该语法看起来不正确。您应该从根目录执行命令,而不是在 app 文件夹内。 这是大约一年前... symfony 真的是测试版【参考方案4】:

使用以下命令创建一个新的 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

【讨论】:

【参考方案5】:

我整理了a bash script 来帮助解决这个问题,让 CLI 工具可以从项目中的任何地方轻松访问。下载它,使其可执行并将其放入您的 PATH(例如 /usr/local/bin/)。

那么您无需位于项目的根目录中即可访问 CLI 工具。开火吧sf <command>。它适用于 Symfony 1.3/1.4 和 Symfony2。

【讨论】:

【参考方案6】:

我试图否决你自己的答案,但我没有足够的代表!

-

Sergi 和 ok 准确地回答了你,但我会扩展以防万一读到这篇文章的人像你一样感到困惑。

您认为您需要使用“php 控制台 Symfony”,因为您自己不会让文件夹名称变得容易。

我喜欢在我的主文件夹中工作。每当我登录时,我总是从那里开始,所以我在家里创建了一个文件夹,例如:~/web/sandbox.sf2

那么您可以使用指向 /var/www 的符号链接,例如:sudo ln -s ~/web/sandbox.sf2/home/myusername/web/sandbox.sf2

所以当你处理你的文件时,你会知道你已经在一个 symfony2 项目中。 (我也觉得一开始这样使用它很奇怪,但我已经习惯了,并使用了 Tobias 相同的答案,一个 bin 脚本将 app/console 包装为 sf2 init:bundle 和 sf list 例如)

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

确保您作为用户/组可以编辑您的文件和文件夹。 php app/console 以您使用的用户(在本例中为 root)运行。 还要确保 apache 用户/组可以读取您的文件。

-

请不要使用 root 帐户来 chmod 777 -R 当某些东西不起作用时。测试简单的所有权权限,如果您将 Web 服务器暴露给万维网,它很容易且是必要的概念。

【讨论】:

一年半前大家都在哪里?这篇文章是关于一个非常非常 beta 的 Symfony2。 因为它是 sf2 的测试版,你可以随时删除这个问题,因为没有人会遇到这个问题。

以上是关于如何在 Symfony2 中使用 php 控制台的主要内容,如果未能解决你的问题,请参考以下文章

在 Twig 模板中使用 Symfony2 控制器返回

Symfony2 生成带有选项的实体字段

如何对 Symfony2 控制器进行单元测试?

使用 Monolog 在 Symfony2 中记录 PHP 致命错误

symfony2 cygwin cli php命令错误

如何在 Symfony2 控制器中获取表单值