Silexをcomposerからインストールする

2012年7月5日

symfony-logo

Silexをcomposerからインストールし、HelloWorldの表示までのメモです。

Silexとは、Symfony2のコンポーネントとPimpleで構築されたPHPのマイクロフレームワークです。

動作確認環境

  • PHP5.3.12

目次

  1. composerを使用してSilexをインストール
  2. .htaccess
  3. 動作確認

composerを使用してSilexをインストール

githubのREADMEを参考にcomposerを使ってインストールしました。silex.pharアーカイブも試しましたが、何故か動作しませんでした。

composer.jsonの作成

Silexをインストールしたいディレクトリにcomposer.jsonを作成します。

{
    "minimum-stability": "dev",
    "require": {
        "silex/silex": "1.0.*"
    }
}

composerのインストール

curl -s http://getcomposer.org/installer | php

curlがない環境では下記コマンドでも大丈夫です。

php -r "eval('?>'.file_get_contents('http://getcomposer.org/installer'));"

上記のコマンドを実行すると同じディレクトリにcomposer.pharが作成されます。

Silexのインストール

php composer.phar install

インストールの後に何やらメッセージが出てきました。他のSymfonyコンポーネントのインストールを促しているようです。必要になったら入れます。

Installing dev dependencies
Nothing to install or update
symfony/routing suggests installing symfony/config (dev-master)
symfony/routing suggests installing symfony/yaml (dev-master)
symfony/routing suggests installing doctrine/common (>=2.2,<2.4-dev)
symfony/event-dispatcher suggests installing symfony/dependency-injection (dev-master)
symfony/http-kernel suggests installing symfony/browser-kit (dev-master)
symfony/http-kernel suggests installing symfony/class-loader (dev-master)
symfony/http-kernel suggests installing symfony/config (dev-master)
symfony/http-kernel suggests installing symfony/console (dev-master)
symfony/http-kernel suggests installing symfony/dependency-injection (dev-master)
symfony/http-kernel suggests installing symfony/finder (dev-master)
silex/silex suggests installing symfony/browser-kit (2.1.*)
silex/silex suggests installing symfony/css-selector (2.1.*)
silex/silex suggests installing symfony/dom-crawler (2.1.*)

インストールが完了すると、venderディレクトリが作成され、その中にSilexがインストールされていることが確認できます。

index.php

venderと同じディレクトリにwebディレクトリを作成します。通常は、webディレクトリをドキュメントルートに設定します。
webディレクトリの中にindex.phpを作成し、下記を記述します。

<?php
require_once __DIR__.'/../vendor/autoload.php';
$app = new Silex\Application();
$app->get('/hello/{name}', function ($name) use ($app) {
  return 'Hello '.$app->escape($name);
});
$app->run();

.htaccess

忘れがちですが、index.phpと同じ階層に、.htaccessも作成します。

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteBase /silex/web
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

私の環境では、ドキュメントルートの直下にsilexというディレクトリを作成し、そこにSilexをインストールしましたので、RewriteBaseを変更しています。RewriteBaseは各自の環境に合わせて設定してください。

動作確認

ブラウザから、http://localhost/silex/web/hello/world にアクセスします。URLは各自の環境に置き換えてください。

hello world が表示されればOKです。

ディレクトリ構成は下記のようになりました。参考までに。

silex
├── composer.json
├── composer.lock
├── composer.phar
├── web
│  ├── index.php
│  └── .htaccess
│
└── vendor
    ├── autoload.php
    ├── composer
    ├── pimple
    ├── silex
    └── symfony

-技術ブログ
-