7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordPressサイトのPHPバージョンアップデートに伴うエラー

Last updated at Posted at 2025-02-12

はじめに

こちらの記事で、WordPressのサーバー間データ移行を行った
その際に移行元と移行先でPHPのバージョン違いなどにより発生した
本記事ではその修正方法について記す

環境情報

移行元サーバー

PHP:5.6.40
WordPress:5.1.19

移行先サーバー

PHP:8.3.14
WordPress:6.6.2

エラーの修正

create_functionの廃止

create_functionメソッドはPHP7.2で非推奨となり、PHP8で削除された
PHP8以降では代わりに無名関数を使用する必要がある

- add_filter( 'フィルター名', create_function('$a', "return '<p>これはテストです</p>';") );
+ add_filter( 'フィルター名', function($a){return '<p>これはテストです</p>';});

参考

エスケープされない「・・・」の記述

「・・・」がエスケープされずそのまま使用されている場合、PHPは未定義の定数として解釈してエラーとなる
PHP7以降では未定義の定数に対して厳格なエラーが出やすくなっているため、発生しやすい
(以下の記述はそもそもエラーの可能性が高そうだが...)

- <p><?php $title = 'test'; echo $title. ・・・ ; ?></p>
+ <p><?php $title = 'test'; echo $title. '・・・' ; ?></p>

&= newの記述

PHP 5以降、新しいオブジェクトを作成する際に参照渡しを明示する必要はなくなった
&= newという書き方は非推奨となり、PHP 7以降ではエラーになる

- <?php $test =& new test_class();
+ <?php $test = new test_class();

参考

短縮タグの変更

PHP5.3以下ではPHPのshort_open_tagがデフォルトでOnとなり、短縮タグが利用できていた
PHP7以降ではshort_open_tagがデフォルトでOFFとなり、そのままだとエラーになる
そのため、short_open_tagがOnにするか短縮タグを利用しないようにする必要がある

- <? if($bool): ?>foo<? endif; ?>
+ <?php if($bool): ?>foo<?php endif; ?>
7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?