DokuWiki/プラグイン管理のインストールの機能が動かない(ver Angua)

DokuWiki/プラグイン管理のインストールの機能が動かない(ver Angua)

バージョンと製造年月日

  • 2012-01-22
  • DokuWiki ver Angua

プラグイン管理のインストールの機能が動かない

sprintf() [function.sprintf]: Too few arguments in /hoge/piyo/fuga/lib/plugins/plugin/classes/ap_download.class.php on line 117

プラグインの管理をしようとして更新やインストールを行おうとすると、このようなエラーが出て落ちてしまう。

ap_download.class.php on line 117を確かめる

内部では

msg(sprintf($this->lang['packageinstalled'], count($this->downloaded),  join(',',$this->downloaded)), 1);

このような記述になっている。 この

$this-<lang['packageinstalled']

は値として「インストールが成功しました」的なものが入っていて。そこにはsprintfのプレースホルダである%から始まるものが3つ埋めこまれている。

確認してみる。lib/plugins/plugin/lang/ja/lang.phpには

$lang['packageinstalled']      = 'プラグインパッケージ(%d plugin%s: %s)は正しくインストールされました。';

上の記述と照らし合わせるとplugin直後の%sが明らかに不自然だ。これだと引数に取った文字列とpluginが連結してしまって意味がわからなくなってしまう。

確認のため英語版を見る。lib/plugins/plugin/lang/en/lang.phpには

$lang['packageinstalled'] = 'Plugin package (%d plugin(s): %s) successfully installed.';

こう書かれている。最後の%dにはインストールしたプラグインの個数が入り、%sにはプラグイン名のコンマ連結が入る。 pluginが複数形になるかもしれませんよの「s」だったのにどうまちがったかプレースホルダになってしまったというバグみたいだな。

このバグは

$lang['packageinstalled']      = '%d個のプラグインパッケージ %s は正しくインストールされました。';

に書き換えればなおる。

タグ

wiki/dokuwiki/plugin/install_mechanism_doesnt_work_ver_angua.txt · 最終更新: 2019-09-16 11:26 by ore