CakePHP (1.3.6 and 1.2.9) SecurityComponent修正

Posted in CakePHP on 11月 19th, 2010 by Site Administrator

http://bakery.cakephp.org/articles/markstory/2010/11/13/cakephp_1_3_6_and_1_2_9_released

SecurityComponentの脆弱性が修正されました。
http://co3k.org/diary/12
こちらをみる限り、かなり致命的です。

SecurityComponentはいまいち使い勝手が悪く、調査してみたら私は使用していませんでした。
もしも使用している方いらっしゃいましたら最新版への早期アップグレードが必要です。

Apache リバースプロキシ使用時のログ解析

Posted in OS関連 on 11月 9th, 2010 by Site Administrator

Apacheでリバースプロキシを構築する際の話。

http://www.maruko2.com/mw/Apache/%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7

バックエンドのサーバのApacheのログには、フロントエンドのリバースプロキシサーバのIPが記録される。
リクエスト元のIPアドレスを記録する場合、記録するログの内容を変更する。

LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined
CustomLog logs/access_log combined

LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined
LogFormat “%{X-Forwarded-For}i %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” reverse-proxy
CustomLog logs/access_log_org combined
CustomLog logs/access_log reverse-proxy

webalizerの設定がデフォルトでaccess_logを見るようになっているので、上記のようにaccess_logの内容を変更する。

PHPExcel (1.7.4) テンプレートコピー

Posted in PHP関連 on 11月 8th, 2010 by Site Administrator

PHPExcelで、レコード数可変の帳票を作成する際のお話。

あらかじめレコードの雛形を用意しておき、レコード数分その雛形をコピーする、
ということはよく行いますが、これをPHPExcelで行う場合。

・・・地味にセル単位に雛形から書式のコピーをするしかないみたいです。
1.duplicateStyleで書式をコピー
2.setCellValueでラベルとして使用する文字等のデータをコピー
3.結合セルがある場合、mergeCellsで結合

雛形をRangeでコピーすることができれば簡単なのに・・・。

CakePHP (1.3) 大量のクエリを投げるときの注意点

Posted in CakePHP, DB, PHP関連 on 11月 8th, 2010 by Site Administrator

http://1-byte.jp/2010/10/29/too_many_queries_on_cakephp/
大量にクエリを発行する際、キャッシュが短い周期で被っちゃうみたいです。
「数万件のデータで衝突が発生する」とのことで、大量クエリが想定される場合は
「DboSourceクラスのcacheMethodsプロパティをfalseに設定すれば良い」とのことです。

CakePHP (1.3.5) CAPTCHA コンポーネント(日本語対応)

Posted in CakePHP, PHP関連 on 11月 8th, 2010 by Site Administrator

こちらのCAPTCHAが日本語の出力ができて面白いです。

http://www.infosia.co.jp/posts/157

ちなみに私の環境では使用例のとおりだと、出力時にフォントファイルが無いとエラーになってしまいます。
imagettftextの第7引数を「getenv(“GDFONTPATH”).DS.$this->font」として、フォントパスをフルパス
で渡すと正常に動作しました($this->fontには拡張子「.ttf」も付与してあります)。

CakePHP (1.3.5) Session タイムアウト設定

Posted in CakePHP, PHP関連 on 11月 5th, 2010 by Site Administrator

core.phpのSession.timeoutの設定だけでは不十分。

bootstrap.phpに下記を設定

session_save_path(TMP.DS.’sessions’);
ini_set(‘session.gc_maxlifetime’, 28800);//秒
ini_set(‘session.gc_divisor’, 1);

上記2・3行目で、php.iniの値をアプリ限定で上書き。

session_save_pathを変更しない場合、他のアプリとSessionファイルの格納パスを共有する。
他のアプリのSession lifetimeが短く設定されている場合、それに引きずられてSessionファイルが
消されてしまうので、上記1行目でアプリ固有のSessionパスを指定する。

CakePHP (1.3.5) join設定のpagination

Posted in CakePHP, PHP関連 on 11月 5th, 2010 by Site Administrator

多階層のアソシエーションが必要等の理由で、belongsToなどの設定ではなくjoin句を独自に設定している際のお話。

join句を設定している際のpaginationのsortについて、join先の項目を設定している場合はリンクをクリックしても
正常にソートが行われない。どうもそういう仕様らしい。
このような場合、join先の項目をvirtualFieldsに定義し、その定義した項目をsortに指定すればきちんと動作する。