- PHP7.4から8.0にアップグレードしたため、DokuWikiが起動できなくなりました。
- DokuWikiを 2024 “Kaos” にアップグレードすると、今度は動作しないプラグインが出てきました。
- いったんプラグインを手動削除するとログインできるようになったので、それから最新版のプラグインを入れ直しました。
- 振り返ると、サイトのPHPをアップグレードする前に、DokuWikiのプラグインの更新を確認しておけばよかったです。
ちゃんと更新をしていないと、二度手間になってしまうんだね。
最近は、情報共有はSlackをメインに使っています。
DokuWikiは個人的なマークダウン文書の記録や印刷用に残っているだけなので、ノーマークでした。
1. 概要:エラー元になっていたプラグイン
エラー元になっていたプラグインは下記(ただし、更新していなかったから)。
- Move
- Changes
- Markdowku
ログインページでエラーになっていたので、サーバ管理画面から一つずついったんプラグインを手動で削除しました。
とりあえずログインできるようになったら、拡張機能の管理画面で、追加し直しました。
また、サイト設定の変更が必要だったのは
- Indexmenu
defer_jsが有効になっていたので無効にしました。
ちゃんとエラーに対応して、プラグインを更新したら、動くようになりました。
日ごろのメンテナンスが大事ですね。
2. ついにDokuWikiが内部サーバエラーになった(2018 “Greebo”)
PHPのアップグレードを期に、サイトの大幅なメンテナンスが必要になりました。
その1つが DokuWiki。
教室内のメモ用に使っています。
使っているプラグイン(主にMarkdowku)の互換性の関係で、ずっとアップグレードを控えていました。
ところが、とうとう動作しなくなってしまいました。
このページは動作していません
〜では現在このリクエストを処理できません。
HTTP ERROR: 500
「内部サーバエラー」になっています。
2018-04-22のバージョンで止まっているので、いい加減をアップグレードします。
2-1. DokuWiki 2024 “Kaos” にアップグレードした
一応、念のためにバックアップしてアップグレードします。
少し待つと、正常にアップグレードは完了しました。
3. ログインページで「FatalException」
ログインページを表示すると、エラー画面が表示されていました。
アップグレード前は内部サーバエラーだったので、とりあえず「リクエストに応答はしている」ようにはなりました。
dokuwiki\Exception\FatalException: Array and string offset access syntax with curly braces is no longer supported
An unforeseen error has occured. This is most likely a bug somewhere. It might be a problem in the move plugin.
More info has been written to the DokuWiki error log.
PHPの新しいバージョンでカーリーブレースを使ったオフセットアクセスが非推奨になったことで、エラーになっているようです。
3-1. エラー元のプラグインを手動で削除した
エラーメッセージを読むと「move」プラグインが原因になっていることがわかります。
とりあえず、サーバのファイル管理画面にアクセスして、プラグインのフォルダを削除しました。
すると、ログインページのエラーが微妙に変わりました。
changesプラグインとmarkdowkuプラグインにも問題があるようなので、これも同じように削除しておきます。
3-2. ログイン画面が表示されるようになった
なんとかログイン画面が表示されました。
DokuWikiにはプラグインをオフにして起動する「セーフモード」みたいなのはないのかな?
DokuWikiには、プラグインを無効にして起動するセーフモード機能はありません。しかし、プラグインの影響を切り分けるために、いくつかの代替方法があります。
- プラグインディレクトリの名前を変える
- 個別にプラグインを無効化する
- 疑わしいプラグインを特定する
- 開発環境でテストする
- バックアップから復元する
- DokuWikiを再インストールする
4. ログインしてプラグインを管理する
DokuWikiにログインできれば、DokuWikiの管理画面が使えます。
「設定」の「拡張機能管理」から、プラグインを確認します。
「更新」がついているものがたくさんあります。
1つずつ動作を確認しながら更新していきました。
4-1. プラグインをインストールし直す(move, changes)
また、先ほど削除したプラグインをインストールし直しました。
「検索とインストール」で探すと、対応しているバージョンがありました。
事前に更新しておけば、もっと早かったね。
4-2. markdowkuプラグイン(2021-12-04更新版)の再インストール
Markdowkuプラグインは、以前にもエラーになっていた記憶があります。
GitHubで公開されているrc2
ブランチを探して、手動でインストールしました1。
ところが、後で調べてみると、DokuWikiのプラグイン検索でも対応した版が出てきました。
どちらも、Raphael Wimmer氏が 2021-12-04に更新したバージョンが最新でした。
DokuWiki 2024-02-06 “Kaos”まで対応しています。
5. Indexmenuプラグインの問題(defer_js)
Indexmenuプラグインでもエラーが表示されています。
Indexmenu Plugin: If you use the js’-option of the indexmenu plugin, you have to disable the ‘defer_js’-setting. This setting is temporary, in the future the indexmenu plugin will be improved.
(Indexmenu プラグイン:indexmenu プラグインの js オプションを使用する場合は、「defer_js」設定を無効にする必要があります。 この設定は一時的なものであり、将来的には、indexmenu プラグインが改善される予定です。)
メッセージに従って、「管理」から「設定管理」を表示して、「機能フラグ」の「defer_js」をオフにしました。
defer_js
ページのHTMLが解析されるまでJavascriptの実行を延期する
(ページの読み込み速度が向上しますが、一部のプラグインが正常に動作しない可能性があります)
公開しているWikiではないので、そこまで処理速度よりは安定性があれば十分です。
これで表示エラーもなくなり、とりあえずは動くようになりました。
サーバプログラムは、定期的なメンテナンスが重要だね。