Caution: You are browsing the legacy symfony 1.x part of this website.

コマンドラインインターフェイス

1.0
Symfony version Language

概要

Webアプリケーションの開発とメンテナンスの期間に開発者が実行する多くのタスクはsymfonyのコマンドラインインターフェイス(CLI)によって取り扱われます。16章では詳細にこれらのいくつかのタスクが説明されているのに対して、この章では手短にこれらすべての一覧を示します。

CLIのコア

symfonyスクリプトはプロジェクトのroot内に位置するPHPスクリプトです。symfonyコマンドはタスクを求め、いくつかのタスクは追加パラメータを必要とします。このコマンドを呼び出すためには、次の構文を使います:

$ cd myproject
$ php symfony <TASK> [parameters]

note

symfonyのCLIはsymfonyプロジェクトのrootからのみ動作します。

symfonyのサンドボックスはより速く呼び出すことができるWindowsと*nixプラットフォームのための実行ファイルを含みます:

$ ./symfony <TASK> [parameters]      #  *nix
$ symfony <TASK> [parameters]        #  Windows

この章の例文ではphp実行ファイルを使いますが、プロジェクトが適切な実行ファイルを持つ場合は省略できます。

利用できるすべてのタスクの一覧を表示するためには、次のコマンドを呼び出します:

$ php symfony

インストールされたsymfonyパッケージのバージョンを表示するためには、次のコマンドを入力します:

$ php symfony -V

いくつかのタスクは、より速く入力できて、同じ効果を持つショートカットを持ちます。

$ php symfony cc
// 下記と同じ
$ php symfony clear-cache

例外が起きたとき、スタックトレースと詳細な説明を取得するとよいでしょう。トレースを取得するタスク名の前に-tオプションを追加します。

note

レコードに対して、symfonyはPakeと呼ばれる共通のタスクを管理する専用ツールを使います。PakeはmakeコマンドをRubyに翻訳した、Rakeコマンドに似ているPHPツールです。Pakeはsymfonyチームによって開発されました。pakefile.phpと呼ばれる設定ファイルを指定することでいくつかの管理タスクを自動化します。しかしsymfonyとコマンドラインでpakeツールを利用するので、pakeが何を行いどのように動作するのかを学ぶ必要はありません。

CLIタスク

構造の生成

$ php symfony init-project <PROJECT_NAME>

新しいsymfonyプロジェクトを初期化します(ショートカット: new)。

$ php symfony init-app <APPLICATION_NAME>

新しいsymfonyアプリケーションを初期化します(ショートカット: app)。

$ php symfony init-module <APPLICATION_NAME> <MODULE_NAME>

新しいsymfonyモジュールを初期化します(ショートカット: module)。

$ php symfony init-batch <SKELETON_NAME> [...]

新しいバッチファイルを初期化します(ショートカット: batch)。初期化するバッチスケルトンを選択しプロンプトに従わなければなりません。

$ php symfony init-controller <APPLICATION_NAME> <ENVIRONMENT_NAME> [<SCRIPT_NAME>] [true|false]

新しいコントローラを初期化します(ショートカット: controller)。デフォルトのスクリプト名はsymfonyの規約に従います。

これらのコマンドについてもっと詳しい情報は16章で見つけてください。

モデルの生成

$ php symfony propel-build-model

現在のモデルに対して、config/ディレクトリのスキーマファイル(YAMLもしくはXML)に基づいて、Propelクラスを生成します。

次のコマンドによって使われる接続設定はconfig/propel.ini設定ファイルから取得されます。

$ php symfony propel-build-sql

schema.xml内に記述されたテーブルを作るSQLコードをdata/schema.sqlファイルに生成します。

$ php symfony propel-build-db

接続設定に基づいて空のデータベースを作成します。

$ php symfony propel-insert-sql

data/schema.sqlからSQLコードをデータベースに挿入します。

$ php symfony propel-build-all

propel-build-modelpropel-build-sqlそしてpropel-insert-sqlのすべてを1つのコマンドで実行します。

これらのコマンドについて詳細な内容は8章で見つけてください。

スキーマの管理

$ php symfony propel-build-schema [xml]

既存のデータベースからschema.ymlファイルを作成します。xmlパラメータが追加された場合、タスクはYAMLバージョンの代わりにschema.xmlファイルを作ります。

$ php symfony propel-convert-xml-schema

見つかるXMLスキーマのYAMLバージョンを作ります。

$ php symfony propel-convert-yml-schema

見つかるYAMLスキーマのXMLバージョンを作ります。

データの管理

$ php symfony propel-load-data  <APPLICATION_NAME> [<ENVIRONMENT_NAME>] [<FIXTURES_DIR_OR_FILE>]

他に指定されていなければデフォルトのdata/fixtures/ディレクトリからすべてのデータを読み込みます。デフォルトの環境はdevです。フィクスチャディレクトリはプロジェクトのデータディレクトリに対して相対的に指定しなければなりません。たとえばfixtures(デフォルト)、もしくはtestdataもしくは単独のファイルであるfixtures/file.ymlを指定します。

$ php symfony propel-build-all-load  <APPLICATION_NAME> [<ENVIRONMENT_NAME>] [<FIXTURES_DIR_OR_FILE>]

propel-build-allpropepl-load-dataを実行します。propel-load-dataと同じ引数を受け取ります。

$ php symfony propel-dump-data  <APPLICATION_NAME> <FIXTURES_DIR_OR_FILE> [<ENVIRONMENT_NAME>]

データベースのデータをYAMLフォーマットでフィクスチャファイル内のファイルにダンプします。

開発ツール

$ php symfony clear-cache [<APPLICATION_NAME>] [template|config]

キャッシュ情報(ショートカット: cc)をクリアします(詳細は12章で見つけてください)。

$ php symfony clear-controllers

本番環境で動作しているもの以外のすべてのコントローラのwebディレクトリをクリアします。本番サーバーにデプロイする前にとても役立ちます。

$ php symfony fix-perms

ディレクトリのパーミッションを修正して書き込み権限が必要なディレクトリを777に変更してください。SVNリポジトリからチェックアウトする場合、パーミッションが壊れる可能性があります。

$ php symfony freeze
$ php symfony unfreeze

すべての必要なsymfonyライブラリをプロジェクトのdata/lib/web/sf/ディレクトリにコピーしてください。あなたのプロジェクトは一種のサンドボックスになります。すなわち依存しないスタンドアロンのアプリケーションで、FTP経由で本番のサーバーに転送する準備ができています。シンボリックリンクと同様にPEARインストールで立派に動作します。unfreezeタスクでプロジェクトを解凍します。

$ php symfony sync <ENVIRONMENT_NAME> [go]

現在のプロジェクトを他のマシンに同期化してください(16章で詳細な内容を見つけてください)。

テスト

$ php symfony test-unit <UNIT_TEST>

test/unit/ディレクトリに設置されたユニットテストを立ち上げます。パラメータは1つのユニットテストのファイル(Test.php接尾辞は省略)、ユニットテストファイルのグループ、もしくはワイルドカードを持つファイルパスの名前です。テスト名が渡されない場合、すべてのテストが実行されます。

$ php symfony test-unit

ハーネスモードですべてのユニットテストを起動します。

$ php symfony test-functional <APPLICATION_NAME> <TEST>

特定のアプリケーションに対して機能テストを立ち上げます。TESTパラメータは単独の機能テストのファイル((Test.phpの接尾辞は省略)、もしくはグループのユニットテストファイル、もしくはワイルドカードによるファイルパスの名前になります。

$ php symfony test-functional <APPLICATION_NAME>

ハーネスモードですべてのアプリケーションの機能テストを立ち上げます。

$ php symfony test-all 

ハーネスモードですべてのユニットテストと機能テストを立ち上げます。

テストについてもっと詳細な内容は15章をご覧ください。

プロジェクトの管理

$ php symfony disable <APPLICATION_NAME> <ENVIRONMENT_NAME>

ユーザーをsettings.ymlファイル内の利用不可能であることを伝えるモジュールとアクションに転送しsettings.ymlファイル内で利用不可能であることを伝える設定をしたようにふるまいます。settings.ymlファイルを上回る利点はプロジェクト全体だけでなく単独のアプリケーションを無効にできることです。

$ php symfony enable <APPLICATION_NAME> <ENVIRONMENT_NAME>

アプリケーションを有効にしてキャッシュをクリアします。

$ php symfony purge-logs

logging.ymlpurge: on(デフォルト値)を指定するアプリケーションと環境のログディレクトリにおけるログファイルをクリアします。

$ php symfony rotate-log <APPLICATION_NAME> <ENVIRONMENT_NAME>

rotateloggin.yml内のログファイルに対して有効になっている場合ログファイルのローテーションを強制します。ローテーションパラメータはperiod(1つのファイルが終わる日数)とhistory(保存されるアックアップログファイル数)です。下記のコードはローテーションの設定を持つlogging.ymlの例です:

prod:
  rotate:  on
  period:  7       ## ログファイルはデフォルトで7日ごとにローテーションされる
  history: 10      ## 最大10のログファイルが保存される   

scaffoldingとadminの生成

$ php symfony propel-generate-crud <APPLICATION_NAME> <MODULE_NAME> <CLASS_NAME>
$ php symfony propel-init-crud <APPLICATION_NAME> <MODULE_NAME> <CLASS_NAME>

モデルからのクラスに基づいた新しいPropelのCRUDモジュールを生成します。generateバージョンはフレームワークからのコードを新しいモジュールにコピーし、initバージョンはフレームワーク内のモジュールを継承する空のモジュールを作成します。この例において、生成されたコードはcache/フォルダ内でのみ見えます(生成されたアクションとテンプレートはフレームワークから継承します)。

$ php symfony propel-init-admin <APPLICATION_NAME> <MODULE_NAME> <CLASS_NAME>

モデルからのクラスに基づいて新しいPropelのadminモジュールを初期化します

これらのコマンドについてもっと詳細な情報は14章を調べてください。

プラグインの管理

$ php symfony plugin-install <CHANNEL_NAME>/<PLUGIN_NAME>

新しいプラグインをインストールします。symfonyのwikiから新しいプラグインをインストールするために、http://plugins.symfony-project.comをチャネル名として使います。

$ php symfony plugin-upgrade <CHANNEL_NAME>/<PLUGIN_NAME>

プラグインをアップグレードします。

$ php symfony plugin-upgrade-all

以前ローカルにインストールされたすべてのプラグインをアップグレードします。

$ php symfony plugin-uninstall <CHANNEL_NAME>/<PLUGIN_NAME>

プラグインをアンインストールします。

プラグインについて詳細な内容は17章を調べてください。

自動入力補完

symfonyのwikiにはユーザーが投稿したsymfonyコマンドの自動入力補完を可能にする設定ファイルが含まれます。利用しているシェルに適したものをチェックアウトしてください: