Yoshiyuki Okamoto
okamo****@gmail*****
2011年 5月 24日 (火) 10:00:25 JST
お世話になっております。 岡本です。 Kenjiさんご返信ありがとうございます。 > \w だとうまく動かない理由がわかりません。 > 動作しないサンプルコードはありますでしょうか? ⇒こちらですが、下記のようにValidation Rule に[が含まれる場合に\wだとマッチしないようです。 callback__check_db[arg1,arg2] > 最新のコード <https://bitbucket.org/ellislab/codeigniter-reactor> では、48行目で > > $lib_name = ucfirst(strtolower(str_replace('CI_', '', $this->lib_name))); > > となっており、修正されているのではないでしょうか? ⇒こちらですが、ありがとうございます。先程上記URLから最新ソースをDOWNLOADしたので、 確認してみます。 > Apache が強制終了するのは、たぶん PHP のバグでしょうね。CI が原因とは言えないでしょうから、 > CI のバグとするのは無理があるように思います。 > > E_DEPRECATED が発生するライブラリの方が問題とも言えると思います。 ⇒こちらですが、了解です。 こちらはずいぶんはまりました。Pear::MailあたりがE_DEPRECATED発生させてるみたいでした。 > https://bitbucket.org/ellislab/codeigniter-reactor/issue/158/cachephp-save-behavior-depending-on-the > これですね。バグと思えますので open にしました。 ⇒こちらですが、まさにこれですね。 恥ずかしながら open にするというのはどういう意味でしょうか? 追加ですが、system/libraries/Cache/Cache.phpで ドライバをmemcached、バックアップアップドライバをfileに指定して、memcachedモジュールのない環境でキャッシュライブラリを使うとエラーとなりました。こちらもバグかと思います。取り急ぎローカル修正済ですが、こちらも共有しますね。 system/libraries/Cache/Cache.php の マジックメソッド public function __get($child) { $obj = parent::__get($child); if ( ! $this->is_supported($child)) { $this->_adapter = $this->_backup_driver; $obj = parent::__get($this->_backup_driver); //この行追加。追加しないと$objがNULLで、後続処理で落ちる } return $obj; } > 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 は継承したりオーバライドできなかった > と思います。 ⇒こちらですが、ありがとうございます。 今回思ったのですが、オーバーライドたくさんあるとバージョンアップの時に大変ですね。 なので、2系にバージョンアップしてできるだけCI標準API使うようにシステム修正しているところです。 ただし、Form_validationクラスについてはPOST値に依存していて、バッチ等のファイル入力で使えない為、大幅に書き換えましたが。 以上です。 取り急ぎお礼と回答まで。 2011年5月23日19:25 Kenji Suzuki <kenji****@gmail*****>: > 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 mailing list > Codei****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >