NP_znBackupNeoでWarningが出る
久々の記事になります。
Nucleus CMSのプラグインに、データベースのバックアップを取ってくれるものがある。
佐藤(な)さんが作ってくださった、NP_znBackupとNP_znBackupNeoとである。
これらのプラグインはいずれも、サイトのいずれかのページへのアクセスがトリガーになり、前のバックアップからあらかじめ設定しておいた時間経過すると自動的にバックアップを作成してくれる。バックアップデータをメールで飛ばしてくれるので、もしものときのことを考えると、ありがたいプラグインである。
私は、サイトの更新状況に応じて24時間ごとあるいは48時間ごとに設定し、アクセスの少ない夜中にバックアップを取るようにしている。
ところで、このプラグインを入れると、Warning(警告)が表示されることがある。
それも、バックアップを自動で作成したときに限り、なので、なかなかわかりにくい。
Nucleus CMSのプラグインに、データベースのバックアップを取ってくれるものがある。
佐藤(な)さんが作ってくださった、NP_znBackupとNP_znBackupNeoとである。
これらのプラグインはいずれも、サイトのいずれかのページへのアクセスがトリガーになり、前のバックアップからあらかじめ設定しておいた時間経過すると自動的にバックアップを作成してくれる。バックアップデータをメールで飛ばしてくれるので、もしものときのことを考えると、ありがたいプラグインである。
私は、サイトの更新状況に応じて24時間ごとあるいは48時間ごとに設定し、アクセスの少ない夜中にバックアップを取るようにしている。
ところで、このプラグインを入れると、Warning(警告)が表示されることがある。
それも、バックアップを自動で作成したときに限り、なので、なかなかわかりにくい。
警告の内容は、以下である。サイトの一番下に表示される。
最初のエラーが、PHPのmysqli_fetch_fields()の引数がおかしい(たりない?)ということらしい。そこでソースを見たところ、mysqli_fetch_fields()という関数があるかどうかで条件わけがされているので、その部分を削除すればいいわけです。
NP_znBackupNeoの場合、znbackupneo/BACKUP.phpの124行目から143行目を、以下のように修正します。
修正前
修正後
これで、Warning(警告)も出なくなったみたいです。
もっとスマートな方法もありそうですが、私にはこれが精一杯です。
Warning: mysqli_fetch_fields() expects parameter 1 to be mysqli_result, resource given in /nucleus_root_path/nucleus/plugins/znbackupneo/DBBACKUP.php on line 126
(上記を24回繰り返し)
Warning: array_merge() [function.array-merge]: Argument #2 is not an array in /nucleus_root_path/nucleus/plugins/NP_znBackupNeo.php on line 325
Warning: Invalid argument supplied for foreach() in /nucleus_root_path/nucleus/plugins/NP_znBackupNeo.php on line 331
最初のエラーが、PHPのmysqli_fetch_fields()の引数がおかしい(たりない?)ということらしい。そこでソースを見たところ、mysqli_fetch_fields()という関数があるかどうかで条件わけがされているので、その部分を削除すればいいわけです。
NP_znBackupNeoの場合、znbackupneo/BACKUP.phpの124行目から143行目を、以下のように修正します。
修正前
if (function_exists('mysqli_fetch_fields') ) {
$fields = mysqli_fetch_fields($result);
for ($j = 0; $j < $num_fields; $j++)
//
//$fields[$j] = $fields[$j]->name;
$fields[$j] = '`' . $fields[$j]->name . '`';
//
} else {
$fields = array();
for ($j = 0; $j < $num_fields; $j++) {
//
//$fields[] = mysql_field_name($result, $j);
$fields[] = '`' . mysql_field_name($result, $j) . '`';
//
}
}
修正後
// if (function_exists('mysqli_fetch_fields') ) {
// $fields = mysqli_fetch_fields($result);
// for ($j = 0; $j < $num_fields; $j++)
// //
// //$fields[$j] = $fields[$j]->name;
// $fields[$j] = '`' . $fields[$j]->name . '`';
// //
// } else {
$fields = array();
for ($j = 0; $j < $num_fields; $j++) {
//
//$fields[] = mysql_field_name($result, $j);
$fields[] = '`' . mysql_field_name($result, $j) . '`';
//
}
// }
これで、Warning(警告)も出なくなったみたいです。
もっとスマートな方法もありそうですが、私にはこれが精一杯です。
