82
CodeIgniterを初めて使うときに ハマった4つのポイント 2013-10-12 noldor

Code igniterを初めて使うときにはまった4つのポイント

  • Upload
    noldor

  • View
    5.867

  • Download
    5

Embed Size (px)

DESCRIPTION

2013-10-12 FuelPHP&CodeIgniter ユーザの集い にて。 http://atnd.org/events/43750

Citation preview

Page 1: Code igniterを初めて使うときにはまった4つのポイント

CodeIgniterを初めて使うときにハマった4つのポイント

2013-10-12 noldor

Page 2: Code igniterを初めて使うときにはまった4つのポイント

自己紹介

• 名前:竹腰彰成(noldor)

• 所属:株式会社アロハ 代表取締役

• お仕事:ECサイトの構築、保守など

• 最近の興味:嫁(@miccweb)

Page 3: Code igniterを初めて使うときにはまった4つのポイント

今日のお話

• 実際に自分がはまった4つをまとめました

– Production環境でエラーログが保存されない

–上記に対応するとエラーが表示される

– メールが文字化け

– メールが設定無視でwordwrapされる

Page 4: Code igniterを初めて使うときにはまった4つのポイント

ここから高橋メソッド風にいき

ます

Page 5: Code igniterを初めて使うときにはまった4つのポイント

1つめ

Page 6: Code igniterを初めて使うときにはまった4つのポイント

Production環境

でエラーログが保存されない

Page 7: Code igniterを初めて使うときにはまった4つのポイント

まず

Page 8: Code igniterを初めて使うときにはまった4つのポイント

使い始めるにあたりソースを先頭から確認

Page 9: Code igniterを初めて使うときにはまった4つのポイント

index.php

Page 10: Code igniterを初めて使うときにはまった4つのポイント

( ゚ Д ゚) …?

Page 11: Code igniterを初めて使うときにはまった4つのポイント

index.php

Page 12: Code igniterを初めて使うときにはまった4つのポイント

(つд ⊂)ゴシゴシ _, ._ ( ゚ Д ゚) …

Page 13: Code igniterを初めて使うときにはまった4つのポイント

_, ._ (#゚ Д ゚)

Page 14: Code igniterを初めて使うときにはまった4つのポイント

error_reportingとは

Page 15: Code igniterを初めて使うときにはまった4つのポイント

PHP エラーの出

力レベルを設定する関数

Page 16: Code igniterを初めて使うときにはまった4つのポイント

PHPのエラーロ

グの出力にも影響する

Page 17: Code igniterを初めて使うときにはまった4つのポイント

0(出力なし)で

再設定していたので

Page 18: Code igniterを初めて使うときにはまった4つのポイント

php.iniのエラー

ログ出力設定は無視される

Page 19: Code igniterを初めて使うときにはまった4つのポイント

Fatalで落ちるとCIのエラー処理

では拾えないことがあるので

Page 20: Code igniterを初めて使うときにはまった4つのポイント

php.iniで設定をしておきたい

Page 21: Code igniterを初めて使うときにはまった4つのポイント

すぐさま書き換えました

Page 22: Code igniterを初めて使うときにはまった4つのポイント
Page 23: Code igniterを初めて使うときにはまった4つのポイント

これでエラーログが出力されま

Page 24: Code igniterを初めて使うときにはまった4つのポイント

……が、これが罠になります

Page 25: Code igniterを初めて使うときにはまった4つのポイント
Page 26: Code igniterを初めて使うときにはまった4つのポイント

2つめ

Page 27: Code igniterを初めて使うときにはまった4つのポイント

Production環境

でエラーが表示される

Page 28: Code igniterを初めて使うときにはまった4つのポイント

さきほど書き換えた

Page 29: Code igniterを初めて使うときにはまった4つのポイント

これを

Page 30: Code igniterを初めて使うときにはまった4つのポイント

本番環境で動作テストします

Page 31: Code igniterを初めて使うときにはまった4つのポイント

本番環境はphp.iniで

Page 32: Code igniterを初めて使うときにはまった4つのポイント

display_errors = Off

Page 33: Code igniterを初めて使うときにはまった4つのポイント

エラー表示を抑制します

Page 34: Code igniterを初めて使うときにはまった4つのポイント

error_log = /var/log/php_e

rrors.log

Page 35: Code igniterを初めて使うときにはまった4つのポイント

ログに運用時のエラーも確保

Page 36: Code igniterを初めて使うときにはまった4つのポイント

これで本番でもエラーを追え

る!

Page 37: Code igniterを初めて使うときにはまった4つのポイント

なぜだか表示されるんですけど

Page 38: Code igniterを初めて使うときにはまった4つのポイント

CIのエラー表示方法は

Page 39: Code igniterを初めて使うときにはまった4つのポイント

デザイン的にきれいに見せるために

Page 40: Code igniterを初めて使うときにはまった4つのポイント

自前でエラー表示している

Page 41: Code igniterを初めて使うときにはまった4つのポイント

PHP標準のエ

ラー表示はされない

Page 42: Code igniterを初めて使うときにはまった4つのポイント

コード追いました

Page 43: Code igniterを初めて使うときにはまった4つのポイント

system/core/common.php

// Should we display the error? We’ll

get the current error_reporting level and add its bits with the severity bits to find out.

Page 44: Code igniterを初めて使うときにはまった4つのポイント

(意訳)error_reporting()の

設定レベルのエラーなら表示するよ

Page 45: Code igniterを初めて使うときにはまった4つのポイント

CIがdisplay_errorを無視してた

orz

Page 46: Code igniterを初めて使うときにはまった4つのポイント

書き換えました

Page 47: Code igniterを初めて使うときにはまった4つのポイント

system/core/common.php

Page 48: Code igniterを初めて使うときにはまった4つのポイント

一緒に書き換えました

Page 49: Code igniterを初めて使うときにはまった4つのポイント

index.php

development環境では強制的にエラー表示

Page 50: Code igniterを初めて使うときにはまった4つのポイント
Page 51: Code igniterを初めて使うときにはまった4つのポイント

3つめ

Page 52: Code igniterを初めて使うときにはまった4つのポイント

メールで文字化け

Page 53: Code igniterを初めて使うときにはまった4つのポイント

ネットに文字化け事例報告

あり

Page 54: Code igniterを初めて使うときにはまった4つのポイント

メールで文字化けしている事例

が多い

Page 55: Code igniterを初めて使うときにはまった4つのポイント

原因は文字コード回りなど

など

Page 56: Code igniterを初めて使うときにはまった4つのポイント

まあ海外のフレームワークは だいたい化けるよね;

Page 57: Code igniterを初めて使うときにはまった4つのポイント

解決策は複数提示あり

Page 58: Code igniterを初めて使うときにはまった4つのポイント

MY_Emailクラス

を作る方法が一番楽そう

Page 59: Code igniterを初めて使うときにはまった4つのポイント

というわけでコピペ

Page 60: Code igniterを初めて使うときにはまった4つのポイント

https://gist.github.com/takekoshi/6931872 に手入れしたものを用意しました

Page 61: Code igniterを初めて使うときにはまった4つのポイント

これで文字化け解決

Page 62: Code igniterを初めて使うときにはまった4つのポイント

ように見えて、実はコンストラクタが罠に

Page 63: Code igniterを初めて使うときにはまった4つのポイント

いろんなblogに

似通ったコードがありますが

Page 64: Code igniterを初めて使うときにはまった4つのポイント

コンストラクタもほぼ共通なので要注意

Page 65: Code igniterを初めて使うときにはまった4つのポイント
Page 66: Code igniterを初めて使うときにはまった4つのポイント

4つめ

Page 67: Code igniterを初めて使うときにはまった4つのポイント

メールが設定無視で

wordwrapされる

Page 68: Code igniterを初めて使うときにはまった4つのポイント

気づいたのは

Page 69: Code igniterを初めて使うときにはまった4つのポイント

行末だけ文字化け

Page 70: Code igniterを初めて使うときにはまった4つのポイント

よく見るとwordwrapされ

てる

Page 71: Code igniterを初めて使うときにはまった4つのポイント

設定ファイルでoffにしてるの

に?

Page 72: Code igniterを初めて使うときにはまった4つのポイント

ソースを追いかけます

Page 73: Code igniterを初めて使うときにはまった4つのポイント

system/libraries/Email.php

設定ファイルの読込はコンストラクタ経由

Page 74: Code igniterを初めて使うときにはまった4つのポイント

さっきのMY_Email

Page 75: Code igniterを初めて使うときにはまった4つのポイント

コンストラクタ……引数なし

Page 76: Code igniterを初めて使うときにはまった4つのポイント

設定値が握りつぶされてる

orz

Page 77: Code igniterを初めて使うときにはまった4つのポイント

対応方法

Page 78: Code igniterを初めて使うときにはまった4つのポイント

コンストラクタに変更はないの

Page 79: Code igniterを初めて使うときにはまった4つのポイント

削除(オーバーライドしない)

Page 80: Code igniterを初めて使うときにはまった4つのポイント
Page 81: Code igniterを初めて使うときにはまった4つのポイント

まとめ

• Production環境でエラーが保存されない – error_reporting()を設定し直す

• 上記に対応するとエラーが表示される – display_errorを無視しないように書き換え

• メールが文字化け – MY_Emailで対応するがネットから持ってくる場合は注意が必要

• メールが設定無視でwordwrapされる – wordwrapが利いてしまう場合はMY_Emailのコンストラクタで設定を握りつぶしてないか注意

Page 82: Code igniterを初めて使うときにはまった4つのポイント

ご清聴ありがとうございました