タグ:PukiWiki, PukiWikiコラム, ライブラリ, プラグイン, PHP, 致命的エラー, デバッグ

2025/12/23 (火) 更新
先日、SEの良心・友の会サイトの経由で問い合わせがあり、回答返信をすると、さらにその返信には「すでに次のURLから購入済み」とのことで、ライブラリとプラグインを複数本買った方からだったことが判明。
ちょうど開発済みライブラリとプラグインの構成を変更してバージョンアップを検討していた矢先でもあり、検証環境を用意してテストし、返信することにした。
検証環境を用意して購入されたライブラリとプラグインの組み合わせでテストすると案の定、問題があってPukiWikiが起動せずに画面が真っ白で何も表示されない状態になった。
現在、今まで開発したライブラリとプラグインその他をPukiWiki本体にまとめてパッケージ化する方向で開発を進めているが、リリースにはもう少し時間がかかる見通しだ。
そうすると、今回問い合わせがあったように、購入者が独自に必要なライブラリとプラグインのみを購入してPukiWikiに組み込む状況が今しばらくは続くことになるため、PukiWikiのデバッグ方法を記事化しておこうと思ったのである。
|
目次
この記事の平均読了時間は 約8分(3,805文字) です
|
PukiWikiに何らかの変更をした場合、その多くはプラグインの導入やプラグインの差し替え等だったりするが、この時にブラウザで変更したPukiWikiにアクセスすると、画面が真っ白で何も表示されない場合がある。
これは何が起こっているかといえば、PukiWikiが起動する時に構成しているPHPプログラム(多くはプラグイン)に何かしらの「致命的なエラー」が発生しているからだ。
この場合、画面に何も表示されずに停止したままだから、PHPのエラーを全部表示させてみるしかない。
具体的には、PukiWikiのドキュメントルートにある「index.php」ファイルを修正する。
修正前:index.php
// Error reporting
//error_reporting(0); // Nothin
error_reporting(E_ERROR | E_PARSE); // Avoid E_WARNING, E_NOTICE, etc
//error_reporting(E_ALL); // Debug purpose
修正後:index.php
// Error reporting
//error_reporting(0); // Nothin
//error_reporting(E_ERROR | E_PARSE); // Avoid E_WARNING, E_NOTICE, etc
error_reporting(E_ALL); // Debug purpose
上記のように「error_reporting(E_ERROR | E_PARSE);」をコメントアウトして無効にし、「error_reporting(E_ALL);」のコメントを外して有効にすれば良い。
そしてこの「index.php」ファイルをサーバにFTPし、再度ブラウザからPukiWikiにアクセスすると、例えば次のような警告(Warning)と致命的(Fatal)エラーが発生していることが分かる。
図の場合は、PukiWikiのライブラリフォルダ「./lib/plugin.php」ファイルの26行目に何らかのエラーがあることが分かるため、当該ファイルの当該行周辺を調査してエラーの原因を取り除けば良い。
PukiWikiはPHPで開発されているWikiシステムであるため、PHPのプログラムが読めないことにはエラーが発生している根本原因と、その解決方法がワカランという話になるだろう。
いずれにせよ、エラーはケース・バイ・ケースであって、本稿で説明や解説が出来るような話ではない。
それではミもフタもない話で終了してしまうのでアレだが、本稿の例ではPukiWiki1.5.3UTF-8版にPukiWikiエターナルウェア版共通ファイル(Rel0.3.2)を導入し、問い合わせがあった(購入された)その他のライブラリとプラグインを導入すると、PukiWiki用スパムフィルタライブラリを導入せずにPukiWikiを起動した場合に発生したエラーだった。
エラー原因を解決して再度ブラウザからPukiWikiにアクセスし、致命的(Fatal)エラーがないか確認する。
上記画像のように「Notice: ~」というのが一杯出てきて「うわっ!」と思うかも知れないが、これは「何も値が設定されていない変数や配列を利用してる」という警告なので無視していい。
そもそもPHPなんてのは厳格な変数とその型宣言ナシに気軽に使えるスクリプト言語だから「何をイマサラ」ではあるが、確かPHPの4系か5系ぐらいの頃にこの警告を出すようになったと記憶している。
これも言ってしまえば、「OSSのソース(プログラム)なんてこんなモンよね ヽ( ´ー)ノ フッ」なのだ。
ともあれ、図のように「Notice: ~」がいくら出ようが、致命的(Fatal)エラーがなくなればPukiWikiが正常に起動するハズなので、再度ドキュメントルートにある「index.php」ファイルを修正して元に戻す。
修正前のindex.php
// Error reporting
//error_reporting(0); // Nothin
error_reporting(E_ERROR | E_PARSE); // Avoid E_WARNING, E_NOTICE, etc
//error_reporting(E_ALL); // Debug purpose
上記のように「error_reporting(E_ERROR | E_PARSE);」のコメントを外して有効にし、「error_reporting(E_ALL);」をコメントアウトして元の状態に戻して無効にする。
そしてこの「index.php」ファイルをサーバにFTPし、再度ブラウザからPukiWikiにアクセスすると、PukiWikiが起動するハズだ。
致命的(Fatal)エラーがない場合は図のようにPukiWikiが起動して表示されるだろう。
本稿の例での結論を言えば、PukiWiki用スパムフィルタライブラリを購入して導入してもらえれば問題がないのだが、社内のイントラネットでPukiWikiを使いたい場合は、必ずしもPukiWiki用スパムフィルタライブラリは必須ではなかったりする。
そういった意味では、ライブラリとプラグインの組み合わせの想定が一部甘かったと言える。
ゆえに、私がやるべきは開発・公開・販売している各種ライブラリ・プラグイン・共通ファイルの依存関係を再度検証して見直し、本サイトで明示することで、このようなトラブルを未然に防ぐしかない(そこで先日、全面的に見直してリリースした)。
それ以外のエラー原因の場合、例えば他の人が開発したプラグインや、オリジナルで開発したプラグイン等を導入した場合、または既存プラグインその他のPukiWiki構成プログラムを修正した等の場合は、自助努力で解決するしかないのが現状だ。それがOSSなのだから。
仮に私が開発・公開・販売している各種ライブラリ・プラグイン・共通ファイルだけをPukiWikiに導入した場合であっても、あらゆる環境であらゆる組み合わせをテストしたワケでも、テストが出来るワケでもなく、当然ながらそれらをドキュメント等でカバーはしきれない。
その解決策のひとつとして有料の月額オンラインサロンを提供しており(オンラインサロン会員は単体販売している各種ライブラリおよびプラグインの最新バージョンが提供される)、オンラインサロンの場合であれば随時対応可能である、としか言えない。
それ以外では、本サイトのQ&A掲示板もしくはSEの良心のDiscordサーバを利用し、参加者同士で助け合ってもらう以外はないのである(私も気が付いたらなるべく返信はするが義務は負わない)。
基本的に、私が運営している太宰治真理教と私設松本零士博物館の構築と運用で必要な各種ライブラリ・プラグイン・その他を開発し、それらを適宜個別にバージョンアップしながら本サイトで公開している(月額オンラインサロンを含め販売主体はSEの良心・友の会)。
ゆえに、本サイトの更新頻度は前述のサイトよりは低いものの、本稿を含めこれからもPukiWikiコラムを書いて、PukiWikiを利用したい&活用したい人向けに情報を発信して行くつもりだ。
そこで、本PukiWikiコラムで取り上げて欲しい内容等があれば、ぜひ要望や意見等をお寄せいただければ、と思う。
私としてはお寄せいただいた要望や意見について、なるべくその意向に沿う形で記事を書いて行きたいと思っている。
クドイようだが、具体的にはQ&A掲示板もしくはSEの良心のDiscordサーバを利用するか、個別にお問い合わせフォームを利用するのでもいいので、本サイトを有効に活用してほしい。
コメントはありません。 Comments/PukiWikiコラム/002











