Laravel4、ハマりがちな罠
タグ: 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ですが、例外ハンドラーは後半に登録したものの、優先順序が高いようです。