DokuWiki/DokuWiki自体をアップグレードする(ver 2020-06-01 Hogfather編)

DokuWiki/DokuWiki自体をアップグレードする(ver 2020-06-01 Hogfather編)

以前のバージョンが 2018-04-22c Greebo ということでなんと 2年以上あけてのバージョンアップ。

そもそもアップデートプラグインのバージョンを上げろという話から、そこのメッセージで手動で上げろという指示があったので、久々の手動アップロードいくつか問題が発生したのでメモ

とりあえず必ずバックアップはとっておいたほうがよい。トラブル。

普通に上書きインストールしてキャッシュを消すまでは今まで通り、しかし動かない問題。

PHP 5.6 環境で動いた

HTTPClient 問題

一部外部と通信するためのプラグインが HTTPClient.php を使っているのだが、最新版ではその位置が

inc/HTTPClient.php

から

inc/HTTP/HTTPClient.php

に変更になっているので、

このように include しているところを

require_once(DOKU_INC.'inc/HTTPClient.php');

このように書き換える必要がある

require_once(DOKU_INC.'inc/HTTP/HTTPClient.php');

Handler Render 問題

dokuwiki の plugin には handler と render というインターフェースを実装する必要があるのだが、そのシグネチャが最新版では微妙に違う。

そのことで↓のようなエラーが出る

Fatal error: Declaration of syntax_plugin_hoge::handle() must be compatible with dokuwiki\Extension\SyntaxPlugin::handle($match, $state, $pos, Doku_Handler $handler) in /hoge/piyo/fuga/lib/plugins/hoge/syntax.php on line 0

実際のこの部分のコードはこのようになっている

function handle($match, $state, $pos, &$handler){

なのでこいつを指示にあるように書き換える

function handle($match, $state, $pos, Doku_Handler $handler){

render も同様にこのようなエラーが出るので書き換える

Fatal error: Declaration of syntax_plugin_hoge::render() must be compatible with dokuwiki\Extension\SyntaxPlugin::render($format, Doku_Renderer $renderer, $data) in /hoge/piyo/fuga/lib/plugins/hoge/syntax.php on line 0

これを

function render($mode, &$renderer, $data) {

このようにする

function render($mode, Doku_Renderer $renderer, $data) {

↑いちおうここまでの対応で動いた。

wiki/dokuwiki/upgrade/upgrade_2020_06_01.txt · 最終更新: 2020-06-02 15:27 by ore