このブログは長らくPHP7.4だったけれど、色々あってPHP8系に上げました。
WordPress自体は特に何の支障もなく動いていそうなのだけれど、
同じサーバーで動いている個人用ページが動かなくなったので、軽く手直しをしたメモ。
個人用のポータルページで、自分が1からソースを書いたPHPで動いている。
たしか高校時代に作ったので、かれこれ10年以上前。適宜手直しはしているけれど。
近いうちにモダンな技術スタックで作り直したいが、とりあえずまだPHP。
PHP8に切り替えたら見事に壊れた。
修正したら動いた。
自分のページの場合、ポイントは2点。
なお、このサーバーはレンタルサーバー ConoHaWINGを使っています。
1.PHPタグの短縮表記( <? echo "hogehoge"; ?>
というような、 <? //code... ?>
の書き方)はデフォルトで無効になった?
ConoHaWINGで使っているPHPのデフォルトが無効なのかもしれない。
PHP的には <?php //code... ?>
または <?=$var?>
のどちらかしかオススメしてなさそうなので、それに統一。
ちなみにこの超短縮表記はPHP8.0で完全廃止されかけたが、紆余曲折あって阻止され、今も設定をすれば使える模様。
( <?=$var?>
の短縮表記は、廃止案の俎上に上がったことがないので活用して大丈夫。 )
まとめ:
<?php echo "Hello World!"; ?> <!-- ←OK -->
<?="Hello World!"?> <!-- ←OK -->
<? echo "Hello World!"; ?> <!-- ←あまりおすすめしない -->
2.未定義の変数へのアクセスがNoticeからWARNに格上げされた(画面に出るようになった)
たとえばGETパラメーターがある時だけ動くコードは、
<?php if($_GET["param"]){ ... } ?>
で動いていたところ、PHP8.xではUndefinedのWARNが出てしまうので、
<?php if(isset($_GET["param"])){ ... } ?>
こうしましょうということ。横着せず、ちゃんとisset
で確認しましょうね、ということ。
コメント