CodeIgniter 2.x データベースの db_degug を有効にすると fatal error

追記

どうやらかならず起きる問題じゃないみたい。でも起こりうる問題として、誰かの助けになればと残す。

ただの思い込みか勘違いかもしれないけど。

症状

SQLite使いたくてうまく動かないから、デバッグが見れそうな、database.php で定義する db_debug を有効にしたところ、以下のエラーが表示された。

PHP Fatal error:  [] operator not supported for strings in /data/dev/project/system/database/DB_driver.php on line 1183

この箇所を見てみると、display_error() というメソッドので起きているのだが、$message という変数に文字列を突っ込んだあとに、db_debug が有効な場合、debug_backtrace() というメソッドがデバッグ情報を配列で返してくるので、それらを突っ込むときに $message[] を使って、文字列を格納している変数に配列として値を突っ込もうとしているために起きているようだ。

$message に文字列が入らなければとりあえず良さそうなので、最初に文字列を突っ込むところを、配列に文字列を突っ込むように変更。

// system/database/DB_driver.php
// l.1163
if ($native == TRUE)
{
  // $message = $error;
  $message[] = $error; // $messageの配列に入れるようにした。
}
else
{
  $message[] = ( ! is_array($error)) ? array(str_replace('%s', $swap, $LANG->line($error))) : $error;
}

CodeIgniter2を使うのがちょっと不安になってきたぞ…。

まぁメインの機能で致命的なのがあったとしてもそれはすぐに修正されるだろうけど。

でも使いやすいし柔軟性もあって、期待はしてるのでもうちっとだけ慣れるように頑張ろう。

*

PDO入れてないからっぽいな

シェアする

  • このエントリーをはてなブックマークに追加

フォローする