Symfony2 で PHP コンソールを使用する方法
-
05-10-2019 - |
質問
コンソールを見つけて次のように実行します。
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.
助言がありますか?
解決 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"
他のヒント
コンソールは次のように使用されます: $ php app/console [command name]
アプリルートから: ./app/console --shell
以下を使用して、新しい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
.
私はまとめました バッシュスクリプト CLIツールをプロジェクトの至る所から簡単にアクセスできるようにすることで、これを支援します。ダウンロードして、実行可能にして、パスに入れます(/usr/local/bin/など)。
その場合、CLIツールに到達するためにプロジェクトのルートにいる必要はありません。ただ発射してください sf <command>
. 。 Symfony 1.3/1.4とSymfony2の両方で機能します。
あなた自身の回答に反対票を投じようとしましたが、それに対する十分な担当者がいません。
-
Sergi と OK は正確に答えましたが、これを読んでいる人があなたと同じように混乱している場合に備えて詳しく説明します。
フォルダー名を自分で簡単に付けられないため、「php console Symfony」を使用する必要があると考えました。
私はホームフォルダーから作業するのが好きです。ログインするときはいつもそこから始まるので、自宅に次のようなフォルダーを作成します。
~/web/sandbox.sf2
次に、/var/www へのシンボリック リンクを次のように使用できます。
sudo ln -s ~/web/sandbox.sf2/home/myusername/web/sandbox.sf2
そのため、ファイルを操作するとき、自分がすでに symfony2 プロジェクトにいることを知ることができます。(私も最初はそのように使うのは奇妙だと思いましたが、慣れて、Tobiasと同じ種類の答え、たとえばアプリ/コンソールをsf2 init:bundleおよびsf listとしてラップするbinスクリプトを使用しました)
明らかにユーザー権限の問題もあります(http://google.com/search?q=linux+permissions, 、2 番目の結果は良好なようです)。
ユーザー/グループとしてファイルとフォルダーを編集できることを確認してください。php app/console は、使用したユーザー (この場合は root) として実行されます。また、Apache ユーザー/グループがファイルを読み取れることを確認してください。
-
また、何かが動作していないときに root アカウントを使用して chmod 777 -R を実行しないでください。単純な所有権の許可をテストします。これは簡単であり、Web サーバーを World Wide Web に公開する場合に必要な概念です。