レ点腫瘍学ノート

日記/2021年/11月27日/Pukiwiki 1.5.4 RCを試してみた。 の履歴ソース(No.7)

#author("2021-11-28T17:09:18+09:00;2021-11-27T11:04:44+09:00","default:tgoto","tgoto")
#ref(https://oncologynote.com/img/199830c78b.jpg,nolink)

PHP 8.1に対応した[[pukiwiki 1.5.4のRC>https://pukiwiki.osdn.jp/dev/?BugTrack/2522]]がリリースされていたので、早速このサイトに適用してみました。とは言っても、このサイトのpukiwikiはスキン以外にもかなりあちこちに手を入れているのでずいぶんと苦労しました。今でもまだ正しく表示されていないページもありますが、ひとまず動く状態にはなったので一段落。

#contents

* PHP 8はエラーに厳しい [#f6710e6d]

PHP 7.4に比べてPHP 8の優位性はそのスピードです。PHPなどをキャッシュ化させるなどして動作速度を向上させたJIT機能の実装などで、WordpressなどのPHPで動くサイトは表示が高速化されるようです。

一方で、今までPHPは型の違いとかクオーテーションマークの抜けを見逃してくれてたのにPHP 8はそう甘くなくてPHPエラーが出まくります。本当にPHP 7.4までと比べて修正すべき点が多数あります。なかなかエラーに気がつけず修正に時間がかかった点もありました。

**例えば自作のogp.inc.phpプラグイン [#m67ce1fa]

例えば今まで自作のOGPカード表示プラグインogp.inc.phpを使っていましたが、どうしてもこのプラグインを使用するページでエラーが出ます。これの原因は下記のようなチョットした表記ミスでした。PHP 7.4までなら見逃してくれていたのに、PHP 8は見逃してくれません。

 // 誤りの例
 $title = $ogpcache[title];
 // 正しい例
 $title = $ogpcache["title"];

当サイトで改造して使用していたプラグインをひとまず置いておきます。使用は、かならずバックアップを取ってから、自己責任でお願いします。

&ref(ogp.inc.php);  //OGPカード表示プラグイン
&ref(tweet.inc.php);  //ツイート引用プラグイン
&ref(ref.inc.php);  //画像のlazyloadやwebP fallbackなどを実装済み

** URL短縮プラグインは動く [#zdf0a4dc]

一番心配していたURL短縮プラグインは、PHP 8.0でも動作しました。これが動かせない場合はページ名が変わってしまうところが多数出るので、ちゃんと動いてホッとしました。バリューサーバーがPHP 8.1に対応していないのでまだ試せていませんが、おそらくPHP 8.1も大丈夫でしょう。

#ogp(https://dajya-ranger.com/pukiwiki/embed-url-shortener/)

** pukiwiki 1.5.4RCの短縮プラグイン用 [#sffdedb5]

pukiwiki 1.5.4版のlib/func.phpとlib/make_link.phpをそれぞれ短縮URL用に置き換える必要がありますので、当サイトで今回書き換えたものを置いておきます。

&ref(func.php);
&ref(make_link.php);

*動かなくなっているプラグイン [#d4c8c41a]

PHP 7.4までは問題なく使えていたのにPHP 8.0になって使えなくなってしまったプラグインもあります。

代表的なところではsonotsさんのサイトで公開されていた #contentsx や #tag プラグインが使えなくなっています。#includex も使えませんね。sonotsさんのプラグインは非常に高機能で魅力的ですが、sonotsさん自身はもうpukiwikiの開発からは身を引くと宣言されており、これらのプラグインがPHP 8対応になる見込みはほとんどないと言わざるを得ません。一括置換プラグイン(regexp.inc.php)も動かないので、現状では動作させたいときは一旦PHP 7.4環境に戻してから一括置換するなどの対応が必要です。

また便利で多用されているプラグインとしてはattachref.inc.phpも動きませんね。

**対応してほしいなぁと思うプラグイン [#ued3eb61]

- [[attachref.inc.php>https://pukiwiki.osdn.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/attachref.inc.php]]
- [[contentsx.inc.php>http://pukiwiki.sonots.com/?Plugin%2Fcontentsx.inc.php]]
- [[includex.inc.php>http://pukiwiki.sonots.com/?Plugin%2Fincludex.inc.php]]
- [[tag.inc.php>http://pukiwiki.sonots.com/?Plugin%2Ftag.inc.php]]
- [[regexp.inc.php>http://pukiwiki.sonots.com/?Plugin%2Fregexp.inc.php]]
- [[markdown.inc.php>http://pukiwiki.sonots.com/?Plugin%2Fmarkdown.inc.php]]

> 動作しないプラグインが少なくないため、現在は一旦Pukiwiki 1.5.4のままでPHP 7.4に戻しています。

* 高速化の恩恵も [#t01ad3d1]

なぜそこまでしてPHP 8に対応するかですが、一番大きなメリットは高速化ではないでしょうか。PHP 8は様々な高速化のための工夫をこらしており、とくにJITはPHPの動作速度を大きく向上させると期待されています。

#ogp(https://news.mynavi.jp/article/20201129-1534026/)

試しに[[TTFB(Time to First Byte)を測定>https://speedvitals.com/ttfb-test]]してみたところ、従来と比べて30%ほどは速くなっている印象です。1ヶ月あたりのレンタルサーバー代金が400円を切っているバリューサーバーのスタンダードプランでこれだけのTTFBが出ていれば十分ですね?

しかも来月にはバリューサーバーのスタンダードプランのレンタルサーバーはCPU・メモリ強化や全SSD化などの高速化のためのバージョンアップが予定されているので、これよりさらに速度向上する可能性があります。楽しみですね!

#tweet(https://twitter.com/m0370/status/1464279180758056966?s=20)
#navi(日記/2021年)