Kenji Suzuki
kenji****@gmail*****
2011年 5月 23日 (月) 19:25:30 JST
Kenji です。 On Wed, 18 May 2011 19:48:55 +0900 Yoshiyuki Okamoto <okamo****@gmail*****> wrote: > はじめまして。 > 岡本と申します。 > > 現在CodeIgniter1.7.2をベースに作られたシステム(WEBとバッチ)を > CodeIgniter2.0.2に置き換える作業をしているのですが、 > その中で数点バグ?のような内容を発見しました。 > > 対応はしたのですが、コアに手をいれたくないので、 > 本体側に修正依頼をしたいのですが > どのようにすればよいか、アドバイスいただけないでしょうか? > > --------------------------------------------------------------------------------------------------------------------------------- > > (その1)Form_validationでコールバックのValidation関数がうまく動かない > (環境)Windows XP 64bit XAMPP 1.7.4 PHP5.3系 > (対応)system/libraries/Form_validation.phpを修正して解決。 > 492c492 > < if (preg_match("/(callback_\w+)/", implode(' > ', $rules), $match)) > --- > > if (preg_match("/(callback_.+)/", implode(' ', $rules), $match)) \w だとうまく動かない理由がわかりません。 動作しないサンプルコードはありますでしょうか? 他のプラットフォームでも同様に動作しないなら、バグと言えるかもしれませんの 本家にバグ報告してみるということも考えられますが。 > --------------------------------------------------------------------------------------------------------------------------------- > > (その2)Memcacheのキャッシュドライバー読み込み時にエラーが発生。 > (環境)CentOS release 5.4 PHP5.2系 > (対応)system/libraries/Driver.phpを修正して解決。 > 62c62 > < $filepath = > $path.'libraries/'.$lib_name.'/drivers/'.$class.EXT; > --- > > $filepath = $path.'libraries/'.ucfirst($lib_name).'/drivers/'.$class.EXT; 最新のコード <https://bitbucket.org/ellislab/codeigniter-reactor> では、48行目で $lib_name = ucfirst(strtolower(str_replace('CI_', '', $this->lib_name))); となっており、修正されているのではないでしょうか? > --------------------------------------------------------------------------------------------------------------------------------- > > (その3)ControllerでPear::Mailをrequreしたらapacheが強制終了。 > 8192番エラー(E_DEPRECATED)発生が関係している??? > > (環境)Windows XP 64bit XAMPP 1.7.4 PHP5.3系 > (対応)system/core/Common.phpを修正して解決。 > 444c444 > < if ($severity == E_STRICT) > --- > > if ($severity == E_STRICT || $severity == 8192) Apache が強制終了するのは、たぶん PHP のバグでしょうね。CI が原因とは言えないでしょうから、 CI のバグとするのは無理があるように思います。 E_DEPRECATED が発生するライブラリの方が問題とも言えると思います。 > --------------------------------------------------------------------------------------------------------------------------------- > > 以下はバグではないと思いますが、改善したい点です。 > > (その4)Memcacheのキャッシュドライバーのsaveメソッドで値の上書きができない。 > (例) > $CI->cache->memcached->save('sess_id', 'value1'); > $CI->cache->memcached->save('sess_id', 'value2'); > > とした場合に、value2がはいらない様子。 https://bitbucket.org/ellislab/codeigniter-reactor/issue/158/cachephp-save-behavior-depending-on-the これですね。バグと思えますので open にしました。 > (対応)上書きしたかったのでCache_memcached.phpに下記の修正をしました。 > 67c67,74 > < return $this->_memcached->add($id, array($data, > time(), $ttl), $ttl); > --- > > if ($this->_memcached->get($id) === FALSE) > > { > > return $this->_memcached->add($id, array($data, time(), $ttl), $ttl); > > } > > else > > { > > return $this->_memcached->set($id, array($data, time(), $ttl), $ttl); > > } > > --------------------------------------------------------------------------------------------------------------------------------- > > いまのところ、上記4点についてsystemフォルダ内を修正してしまったのですが、 > 修正したくないので、本体修正依頼するか、別の方法で回避したいと考えています。 systemフォルダ内を修正したくない場合は、appliecation/ 以下の同じ フォルダで継承 http://codeigniter.jp/user_guide_ja/general/core_classes.html http://codeigniter.jp/user_guide_ja/general/creating_libraries.html ですが、ドライバや core/Common.php は継承したりオーバライドできなかった と思います。 // Kenji > いきなり長文ですみませんが、アドバイスいただければ幸いです。 > > _______________________________________________ > Codeigniter-users mailing list > Codei****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users