2012年6月8日金曜日

FuelPHPを試してみた

FuelPHP
PHPの新しいフレームワークということでちょっとだけ触ってみました。
。。。なんとか動いたんでメモ程度に。

まず、サイトからバージョン1.2 をダウンロード。
ダウンロードしたファイルを展開してそのままウェブサーバに配置。
(今回はhtdocs > fp-sampleとしました)

とりあえずhttp://localhost/fp-sample/public/index.phpにアクセス。
「You don't have permission to access」と出たんで権限を与えます。
$ chmod 755 fp-sample

再度アクセスすると画面が表示されると思います。

はじめから動くサンプルとしてhttp://localhost/fp-sample/public/index.php/hello/にアクセス。画面に「Hello, World!」が表示されていると思います。
そのままアドレスの後ろに何か適当に文字を入力すると「Hello, <入力文字>」が表示されるようになると思います。

とまぁこんな感じです。
詳細はドキュメントを参考に。(まだ全然わかってないんで。)

もぉひとつ、データベースの接続を試してみました。

まず予めデータベースを作成しておきます。
mysql > create database fp_sample;

fuel > app > config > development > db.php を開いてデータベースの設定を行います。
<?php
return array(
    'default' => array(
        'type' => 'mysql',
        'connection'  => array(
            'hostname'   => 'localhost',
            'database'   => 'fp_sample',
            'username'   => 'root',
            'password'   => 'admin',
        ),
    ),
);

次にoilコマンドを使ってscaffoldでファイルを生成します。
ターミナルを起動してワークスペースに移動、以下を実行します。
$ oil generate scaffold post title:string summary:varchar[250] body:text

続けて以下を実行
$ oil refine migrate
Error: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock)

ここでけっこう悩んでしまいました。
mysql.sockですが私の環境では/tmp/mysql.sockにあります。
phpinfo()で見ても/tmp/mysql.sockになってるし適当にfuelphpを使わずmysql_connectを実行すると普通に動くし。。。
悩んだあげく'socket' => '/tmp/mysql.sock'を追加することで実行されました。
<?php
return array(
    'default' => array(
        'type' => 'mysql',
        'connection'  => array(
            'hostname'   => 'localhost',
            'socket'     => '/tmp/mysql.sock',
            'database'   => 'fp_sample',
            'username'   => 'root',
            'password'   => 'admin',
        ),
    ),
);

これで再度migrateを実行すると成功しました。
$ oil refine migrate
Performed migrations for app:default:

----------------------
※kenji_sさんに教えて頂きましたがFuelPHPのトラブルシューティングに載っていました。
Oil がデータベースに接続できないがアプリケーションは接続できる
私の場合は'localhost'を'127.0.0.1'に変えるだけで動作しました。

----------------------



データベースを見るとpostsというテーブルが作成されていることが確認できると思います。
これでhttp://localhost/fp-sample/public/index.php/postにアクセス。
でかでかとエラーがでました。「Class 'Orm\Model' not found」
ormとかいうのを有効にしないとだめみたいです。
fuel > app > config > config.phpを修正します。
'always_load' => array(
    'packages' => array(
        'orm',
    ),
    (省略)
),

もともとコメントアウトさせているのでコメントを外すだけOK。
再度アクセス!
またエラー。「Crypto key error」。。。
よくわかりませんが「Please copy the following code into APPPATH/config/crypt.php manually:」とあるんで下のグレー部分をコピーしてcrypto.phpに貼付けろってかんじでしょう。
書かれてある通り fuel > app > config > crypt.phpを作って貼付け。

もっかいアクセス。
これでやっと画面が表示されました。

なかなか手間取りました。。。
手順が間違ってるのか?
けどとりあえずこれでデータの一覧〜登録、入力チェックまでを一気にやってくれます。

これからちょいちょい触っていきたいと思います。


0 件のコメント:

コメントを投稿