2011年6月28日火曜日

【CakePHP】でNoticeエラーを表示させない

http://blog.livedoor.jp/loopus/archives/50214277.html

CakePHPで開発を行っているときは、app/config/core.php にて debug を1もしくは2に設定すると思います。
しかし、それだと Notice が発生した場合にも表示されてしまいます。
php.ini でNoticeを出さないように設定しても、Cakeは親切なので? きっちりNoticeを表示してくれます。

本来はNoticeを表示させないようなプログラムを書くのが望ましいですが、どうしてもという場合の解決方法をお教えします。

cake/libs/configure.php の修正

cake/libs/configure.php の273行目あたりを以下のように修正し、強制的にE_ALLにされるのを回避する。
if (isset($config['debug'])) {
if ($_this->debug) {
// error_reporting(E_ALL);
cake/libs/debugger.php の修正
cake/libs/debugger.php の193行目あたりを修正し、E_NOTICEが表示される時にハンドリングされないようにする。
$level = LOG_DEBUG;
switch ($code) {
case E_PARSE:
case E_ERROR:
case E_CORE_ERROR:
case E_COMPILE_ERROR:
case E_USER_ERROR:
$error = 'Fatal Error';
$level = LOG_ERROR;
break;
case E_WARNING:
case E_USER_WARNING:
case E_COMPILE_WARNING:
case E_RECOVERABLE_ERROR:
$error = 'Warning';
$level = LOG_WARNING;
break;
/* case E_NOTICE:
case E_USER_NOTICE:
$error = 'Notice';
$level = LOG_NOTICE;
break;*/


これで、debugを有効にしてもNoticeを表示しなくなる。

CakePHPによる実践Webアプリケーション開発

随分と記載するのが遅くなってしまったが、「CakePHPによる実践Webアプリケーション開発」でCakePHPを学習していて戸惑った件を記載します。まだ、勉強中の身ですが...

『CakePHPによる実践Webアプリケーション開発』を書籍通りに入力しても登録した予定の表示は問題ないが、表示された一覧(月・週)から指定の日付を選択しても別の日付が表示されてしまう。

『なんで指定した日が表示できないんだ?』
と思いデバッグ(変数を表示させる)を進めていくとカレンダーの一覧表示を選択した日付を受け取る部分で『年』が正しく受け取れていない。という現象になっている。

もしかしたら、何か設定に問題があるのかと思いいろいろ調べたが、わからないのでプログラムを直接修正して対応した。
   ↓
【AppFolder】/controllers/components/calendar.php
11行目を下記のように修正。
$from_time = mktime(0,0,0,$month,1 - date('w', $firstday), $year);
   ↓
$from_time = mktime(0,0,0,$month,1 - date('w', $firstday), date('Y'));

本来は、ここではなくココを呼び出す部分である schedules_controller.php で対応するべきなのかと思い controller 部分をデバッグしたように思うが(しなかったのかな?).....
結局は、とりあえず早く先に進みたいという事で components の calendar.php を修正してしまった。
よかったのかなぁ? ... 後で再度確認するかなぁ〜 (不安)

2011年6月15日水曜日

Eclipseの起動時に「eclipse faild to create the java virtual machine」 エラー

Oracle SQLDeveloper 等のJava系ツールと同じ様な感じのエラーなのかと思いや、ある意味では似ている現象であった。

起動対応と日本語化で下記の3行を eclipse.ini 追加した。
【起動対応】
-vm
C:/Program Files/Java/jdk1.6.0_24/bin/javaw.exe

【日本語化】
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
-startup
plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.2.R36x_v20101222
-product
org.eclipse.epp.package.modeling.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-vm
C:/Program Files/Java/jdk1.6.0_24/bin/javaw.exe
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m