(メモ)PHP7→8にしたメモ

テクノロジー

このブログは長らく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で確認しましょうね、ということ。

コメント

タイトルとURLをコピーしました