Dokuwikiにプラグインを入れたら，真っ白なページが表示される

研究室のPCをDokuwikiとして稼働させています．
一応忘れないためにインストール手順も書いておきます．
参考程度にしてください．


# インストール
まずは，sources.listを適切に設定し，アップデート・アップグレードを行います．

```
$ apt-get update
$ apt-get upgrade -y
```

以下のリンクにDokuwikiの立て方が掲載されています．

https://tutorialcrawler.com/ubuntu-debian/ubuntu-20-04-lts%E3%81%ABdokuwiki%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/#i

上記リンク内の # Let’s EncryptSSLでDokuWikiを保護する # より下はやってません．
なぜかというと，ローカルネットワーク内部に設置するためです．

後は，install.phpに行き，適切に設定すると，ページができる．

手順通り行うと，Dokuwikiは立ち上がるはずです．

# データ保存先を変更したら躓いた

PCのストレージが大きいPCもありますが，私の場合は外付けHDDに保存する計画です．
Dokuwikiのページ上で右上の管理>サイト設定>データ保存用のディレクトリ　という部分を変更します．
一応絶対パスで書いておくといいと思います．
すると
先程まで開けていたDokuwikiが開けない．

開けなくなった理由は以下のような感じだと理解している．
ファイル保存場所として指定したディレクトリには，atticやcache,index.その他諸々がディレクトリとして存在していなければ，Wikiページが開けない仕組みになっている．

```
# find / -name data
で検索し，自分は以下のディレクトリにあった．
/var/www/html/dokuwiki/data
```
このdataディレクトリをサイト上で指定したディレクトリにコピーすると，開ける．
これで，主観的にみて容量が大きいHDDに保存することができるようになりました．

# いよいよ本題のプラグインインストール
LaTeXのプラグインをインストールすると真っ白いページしか表示されない．
Dokuwiki日本語版のFAQページは以下．
ここでエラーログの場所を知る．

https://www.dokuwiki.org/ja:faq:blankpage

```
$ vi /var/log/apache2/error.log

[Wed Apr 14 15:39:58.237882 2021] [php7:error] [pid 17137] [client 172.16.0.4:34588] 
PHP Fatal error:  Declaration of syntax_plugin_pageindex::render($mode, &$renderer, $data) 
must be compatible with 
dokuwiki\\Extension\\SyntaxPlugin::render($format, Doku_Renderer $renderer, $data) 
in /var/www/html/dokuwiki/lib/plugins/pageindex/syntax.php on line 99,
```

上のerror.logからエラーを吐いているプログラムを突き止める．
エラーログの一番下が１番新しいエラーです．


```
# vi /var/www/html/dokuwiki/lib/plugins/latex/latexinc.php
自分の場合は17行目

不正解
class syntax_plugin_latex_common extends DokuWiki_Syntax_Plugin {
正解
abstract class syntax_plugin_latex_common extends DokuWiki_Syntax_Plugin {
```

## 補足

```
$ vi /var/log/apache2/error.log

[Wed Apr 14 15:39:58.237882 2021] [php7:error] [pid 17137] [client 172.16.0.4:34588] 
PHP Fatal error:  Declaration of syntax_plugin_pageindex::render($mode, &$renderer, $data) 
must be compatible with 
dokuwiki\\Extension\\SyntaxPlugin::render($format, Doku_Renderer $renderer, $data) 
in /var/www/html/dokuwiki/lib/plugins/pageindex/syntax.php on line 99,
 
```

こんな感じのエラーを吐いていると思う．
私はPHPに触れたことはない．
今回はPHPのエラーだが，内容は大雑把にこんな感じ．

```
($mode, &$renderer, $data)  #自分の編集しているPHPプログラム
must be
($format, Doku_Renderer $renderer, $data)
というエラー内容です．
上の段の内容がプログラムに書いてあるけど
正しくは下の段のプログラムだよね？直してね？
```

という内容です．
今回はPHPのエラーでしたが，CやPythonでも同じようなエラーは吐かれるので，応用して解決してください． 

# 最後に
Dokuwikiが真っ白のページしか表示されない場合の解決の流れは以下のとおりとなる．

1.error.logの場所を特定
2.error.logの内容を読み，phpの引数や関数のタイプ，名前を確認
3.ブラウザ上でDokuwikiのページをリロード
4.それでも表示されなければ，1に戻りlogを参照し修正する．

Dokuwikiのバージョンとかもあるそうですが，私はそこまで詳しくないです．
詳しい方は教えてください．

# おまけ
## .pyファイルや.shファイルがアップロードできない場合の対処法

Dokuwikiではアップロードできる拡張子を指定するファイルが存在する．

```
vi  /var/www/html/dokuwiki/conf/mime.conf
```

mimeってのが何なのかイマイチ理解できてませんが，拡張子をグローバル単位のようなもので記載したものだと理解しています．
間違ってたら教えてください．

mimeのファイルタイプわからないよ．ぴえん．ぴえん．
って方は以下のリンクで調べることができます．
調べるのだるいから，ノリで書けば大丈夫だろ！って考えてるそこのあなた．
ちゃんと調べたほうがいいですよ．これはDokuwiki公式サイトに記載の有るサイトです．
以下の記載は正解の記載．

https://filext.com/

```
py     text/x-python
sh     application/x-shellscript
```

## 実はpythonでも調べることができます(後で間違ってることが発覚)

```
#!/usr/bin/python3
import mimetypes
print(mimetypes.guess_type('検索ファイルを入力'))
# ('text/x-sh', None)     #.shファイル
# ('text/x-python', None) #.pyファイル
```

結果が違うのがわかると思います．
リンク先で調べたほうが正しかったです．(私の環境では．)


駄文で申し訳ないですが，これはメモ的な立ち位置の記事です．
参考にしてもらって構いませんが，間違ってる可能性もあります．