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を作って貼付け。
もっかいアクセス。
これでやっと画面が表示されました。
なかなか手間取りました。。。
手順が間違ってるのか?
けどとりあえずこれでデータの一覧〜登録、入力チェックまでを一気にやってくれます。
これからちょいちょい触っていきたいと思います。