FuelPHP を MAMP 環境でテストする時にハマった所を少しご紹介します。
curl get.fuelphp.com/oil | sh
いきなりしょっぱなですが、スーパーユーザーでないと動かない事にご注意ください。それに、気づかずごにょごにょやっていたら oil からhtmlがこぼれて来ておかしくなってしまいました。この1行のインストールコマンド、実は Mac OS の usr/bin フォルダにシェルスクリプトを埋め込むものなのです。何故かそこへ HTML を作ってしまいました。多分 wget か何かでへまをしたのでしょう。
という訳で一旦削除して作り直したい時もあると思います。そんな時は /usr/bin/oil を削除して再実行します。
cd /usr/bin
sudo rm oll
Scafolding
oilさえ正常に動けば問題なく動作します。コマンドの前に sudo を着けるのをお忘れなく。
oil create blog
oil generate scaffold post title:string summary:varchar[250] body:text
PDOの設定
ここが一番のハマりどころだと思います。MAMP専用のソケットを位置を指定しないとPDO接続されません。
app/config/development/db.php
return array(
'default' => array(
'connection' => array(
'dsn' => 'mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock;dbname=blog',
'username' => 'root',
'password' => 'root',
),
),
);
圧縮モード
上記でDBの構築要素まで作成されます。そのあと圧縮オプションでエラーとなりました。
oil refine migrate
Error - Undefined class constant 'MYSQL_ATTR_COMPRESS' in COREPATH/classes/database/pdo/connection.php on line 83
単純にコメントアウトとします。圧縮モードを使用するとWindows環境で文字化けが発生します。(最近もそうかは調べてませんが、とりあえず。)
ORMパッケージ
ErrorException [ Error ]: Class 'Orm\Model' not found とか言われてORMパッケージのコメントを外したらようやく GUID が動きました。
app/config/config.php
'packages' => array(
'orm',
),
と、ここらへんが FuelPHP on MAMP のハマりどころでした。