Laravel4、ハマりがちな罠

Tags : Laravel4  

只今ベータ4ですが、気付いたことをメモとして積み上げておきます。

気付いたら、追加します。

app/storageのパーミッション

storageディレクトリー下のサブフォルダーも読み書きできるようにしておきましょう。通常、chmod -R o+w app/storageで解決できます。

.httpaccess

これはapacheの設定にもよりますが、.httpaccessのオプションにはFollowSymLinksを付けておく必要があります。

そのため、次のように変更してください。

Options -MultiViews +FollowSymLinks
環境の設定はbootstrap/start.php

環境により設定ファイルの使い分けを行いたい場合、設定を行う必要があります。3と異なり、自動的にlocal環境などに設定されるようにはなっていません。

$env = $app->detectEnvironment(array(
    'local' => array('laravel.dev', 'localhost'),
));

マシン名もかけます。

PHP 5.4の組み込みサーバー

PHP5.4の組み込みサーバーはいちいちサーバーを立てる必要がないためとても便利です。

組み込みサーバーで動作させるスクリプトはインストールしたディレクトリーに存在するserver.phpです。NetBeansですと、実行構成のルーター・スクリプトとして指定すれば問題なく動きます。

Composer updateは慎重に

もし、本格的に開発を始めるのでしたら、composer updateは慎重に行いましょう。LaravelもLaravelが使用しているコンポーネントもアップデートがかかると新しい機能と共に、新しいバグもやってきて、しまいます。ですから、「開発環境が安定しているなあ」と感じている時点の環境をまとめてバックアップしておくか、当面そのバージョン固定になるようにcomposer.jsonを書き換えておきましょう。composer.lockを保存しておくのも役に立ちます。

Sessionはcookie以外に

Laravel3や他のフレームワークでも同様ですが、メッセージや入力をセッションを介してやり取りする場合、セッションがクッキーですと大きさの制限で引っかかり、わけのわからないエラーで悩むことになります。

メッセージをそのままクッキーに保存したのではセキュリティー的に問題になるため、暗号化されます。また日本語はエンコードされバイト数も長くなります。この2つの作用で、クッキーのサイズはあっという間にオーバーします。

最初から、Sessionのドライバーをfileなど他のものに切り替えておきましょう。

IDEのエラー

Laravelのコアでは、コード生成の元になるファイルにphp拡張子をつけています。こうしたテンプレートファイルは、phpそのものではなく、余計なコードが入っているため、エラーになります。

最近のIDEはコードにエラーが含まれていると、そのフォルダーだけではなく、親、その親、さらにその親と、最上位のフォルダーまでエラー表示され、うざったいのです。

これを防ぐには方法は2つあります。一つはIDEのオプションが用意されている場合、エラーが出てもその上の階層のフォルダーまでエラー表示しない設定にすることです。

もうひとつの方法は、IDEは通常、プロジェクトごとにフォルダー単位でプロジェクトに所属しているファイルを管理しており、特定のフォルダーを管理外の「除外」フォルダーとして設定できます。エラー表示があるフォルダー、Laravelの場合名前は"stubs"フォルダーになりますが、これらをプロジェクトの管理の除外フォルダーとして指定しておけば、きれいにエラー無しで表示されます。(もちろん、自分の書いたコードにエラーがあれば、エラー表示されますよ。)

DBでSQLiteを使用する

デフォルトのSQLiteのDBはapp/database/production.sqliteです。DBにSQLiteを使用するならば、これにも書き込みパーミッションを付けるのを忘れないようにしましょう。

例外ハンドラーの優先順序

現在ベータ4ですが、例外ハンドラーは後半に登録したものの、優先順序が高いようです。