[Codeigniter-users] はじめまして

Back to archive index

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




Codeigniter-users メーリングリストの案内
Back to archive index