読者です 読者をやめる 読者になる 読者になる

作業ノート

様々なまとめ、雑感など

Silexを試してみた(1) - きっかけとインストール

きっかけ

仕事で、既存のシステムの拡張でOAuth2を使った認証とAPIの提供をするかもしれない、という話が出たので、個人的にOAuth2の調査を始めた。

そのシステムはphpで作られていたので、ひとまずphpで利用できるOAuth2のライブラリを調べる。

そこで、bshaffer/oauth2-server-phpのことを知り、そのデモ環境のbshaffer/oauth2-demo-phpを自分の環境で試した。

デモ環境のドキュメントを読んだ際に「Silex」というワードを知り、興味を持ったので調べてみた。

Silex

試す前に調べて知った範囲だと以下。

  • php 5.3以降対応のmicro framework。
  • Symfonyと同じ開発元。おそらくSymfonyに対してmicroであるという位置づけのよう。
  • Sinatraの影響を受けている。

Sinatraに影響を受けていることとmicroというワードがあることから、軽量のframeworkであると予想。

試した環境

Vagrantで以下の環境を構築して試してみた。

  • CentOS6.5 x86_64
  • php-5.4.32
    • remiレポジトリからパッケージインストールしたもの
  • httpd-2.2.15
  • httpdのmod_userdirモジュールを有効にして$HOME/public_htmlを作成し、そこに必要なファイルを展開。

インストール

1.Silexのダウンロード

本家Downloadからslim版をダウンロード。

$ cd ~/
$ curl -O http://silex.sensiolabs.org/get/silex.tgz

2.展開

$ cd ~/public_html
$ tar xvfz ../silex.tgz

3.composerのインストール

SilexのコンポーネントはComposerで管理しているので、これをインストールする。

$ cd ~/public_html/silex/
$ curl -sS https://getcomposer.org/installer | php

4.コンポーネントのアップデート

各コンポーネントの最新版のチェックとアップデート。

$ ./composer.phar update

5.htaccessの設定

本家のドキュメントに従うと、以下のようになる。

$ vi web/.htaccess

<IfModule mod_rewrite.c>
    Options -MultiViews

    RewriteEngine On
    RewriteBase /~te2u/silex/web
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]
</IfModule>

しかしこうすると、silexのディレクトリによってRewriteBaseの設定を変更しなければならない。

今回はSymfony2のhtaccessで設定している方法を採用した。

$ vi web/.htaccess

DirectoryIndex index.php

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    RewriteRule .? %{ENV:BASE}/index.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /index.php/
    </IfModule>
</IfModule>

6.確認

http://192.168.33.11/~te2u/silex/web/hello

をブラウザで参照して、Silexが動いていることを確認。

参考

関連