市川市にもランニングにも関係ない、ブログのお話です。
PHP5から7に変更しようとしたが、…
このブログは、WordPress上で書いています。WordpressはPHPという言語がベースになっています。
PHPは、2015年の冬にメジャーバージョンアップして、PHP5からPHP7になりました。
PHP7は、かなりの高速化が実現されているということです。
PHP7が出て、既に1年以上経っていますので、すっかり安定しているでしょう。
思いついて、PHP5から7にバージョンアップしました。
WordPressの管理画面が真っ白!
私は、さくらインターネットのレンタルサーバーを使っています。
さくらインターネットは、管理画面からワンクリックでPHPのバージョンが切り替えられます。さっそくPHP7に切り替えました。
ブログのページを開くと、。。。あれ?真っ白。
慌ててWordpressの管理画面を開こうとすると、こちらも真っ白。焦りました。
WordPressのバージョンは4.7なので、PHP7に対応しているはずです。
ということは、自作部分に問題が有るはずです。
原因を調査すると…
エラーメッセージが全く出ず、画面が白紙になってしまうので、手がかりがあまりありません。
幸いなことに、PHP5とPHP7の切り替えは簡単です。
PHP5と7を行ったり来たりしながら、自作のコードをブロック単位で確認していき、どこで真っ白になるかを見ていきます。超原始的なデバッグです。
この間、他からアクセスが来ると「真っ白」になっていたと思いますが、アクセス数が少ないので影響が有りません(笑)
ループ脱出でないbreakでエラーになっていた(PHP5では、ぎりぎり?セーフ)
なんとか、原因がが特定できました。
自作のPHPコードで、breakを、return代わりに使っていました。
本来、breakはループからの脱出で使うのですが、普通に関数を終了させるのに使っていました。
PHP5では大目に見てもらえたようですが、PHP7では厳格にダメ!になったようです。
7年もののバグ
このコードは、大会参加予定と参加記録をCSVから取ってきて表示するために作りました。
以前に「群馬でジョギング、ランニング」というブログでMovable Typeを使っていたときに書いたコードを、Wordpressでも流用したのでした。もう、7,8年もののバグですね。
以前使っていたMovable Type側も修正が必要だが…
これでOK!と思ったら、Movable Typeの方がInternal Server Errorに。そりゃそうですよね、同じコードを使っているのだから。
原因は同じなので治そう!と思ってMTのコンソールに久しぶりにログインしたら、MT5は既にセキュリティアップデートが終了していて、早急にMT6にアップグレードしろ、とのこと…
Movable TypeはMT6にアップデートが必要だった
MT5をMT6にアップデートするかなあ。または、もう更新しないのであれば、MTのCGIを全部止めてしまうかなあ。
(MTは、Wordpressと違って静的ページなので、CGIを止めても問題ないはずです)
結局、PHP5のままにしました…
しばらくは、PHP5のままで我慢します。まあ、PHP7の高速性が活かせるほど記事を書いてないし、問題ないでしょう。
というわけで、雨で走れない週末(走ってもいいのですが(笑))に、久しぶりにサーバーと戯れた結果、何も変わらず、でした。