最近、プラグインの利用者さまから、プラグインの有効化時にSyntax Errorが出る、とお問合せをいただきました。
そんな馬鹿な、と思って公開中のソースで改めてテストしてみるも、PHP5.6系、PHP7.0系環境では問題なし。
まさかと思って、PHP5.3系のサーバを引っ張り出してテストしてみても、エラーは出ない。
最終的に、判明した原因はこれ。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class WP_Mobile_Sticky_Footer_Admin { //中略 public function add_page() { $page = add_theme_page( '固定フッター', '固定フッター', 'manage_options', 'mobile-sticky-footer-option', array( $this, 'option_page' ) ); add_action( "admin_head-" . $page, function () { wp_enqueue_script( 'jscolor', plugins_url( '/../resource/jscolor.min.js', __FILE__ ) ); }); } //後略 |
ここ数年もPHPを触っている方なら、見つけるのは難しいのではないでしょうか。
今では当たり前のように使っている無名関数も、実装されたのはPHP5.3からです。
従って、PHP5.2.xの環境では、エラーになるのです。
PHP5.2.x や PHP5.3.x を考慮すべきか?
WordPress公式の推奨環境を見ると、
To run WordPress we recommend your host supports:
- PHP version 7.2 or greater.
- MySQL version 5.6 or greater OR MariaDB version 10.0 or greater.
- HTTPS support
That’s really it. We recommend Apache or Nginx as the most robust and featureful server for running WordPress, but any server that supports PHP and MySQL will do. That said, we can’t test every possible environment and each of the hosts on our hosting page supports the above and more with no problems.
Note: If you are in a legacy environment where you only have older PHP or MySQL versions, WordPress also works with PHP 5.2.4+ and MySQL 5.0+, but these versions have reached official End Of Life and as such may expose your site to security vulnerabilities.
となっています。
推奨はPHP7.2以降とはしつつ、
「セキュリティ的な問題等があるからオススメしないけど、PHP5.2.4以降であれば一応動くよ」的なことがかいてあります。
エンジニアの皆さまは「いまどきPHP5.2.4なんて・・・」と思うでしょうが、レンタルサーバの契約その他の政治的な理由により、PHP5.3系でWordPressを動かしているサイトも、少なからず存在するでしょう。
そう考えると、対応せざるを得ないところです。
個人的には、前述の無名関数が使えない(PHP5.3〜)ことのほか、
array_column()、password_hash()、password_verify() などが使えない(PHP5.5〜)
::class が使えない(PHP5.5〜)
定数式が使えない(PHP5.6〜)
などが結構辛いです。
もちろん、プラグイン独自にサポートするPHPのバージョンを規定するのは良いと思いますが、
エンジニアでない方には、「PHPバージョン〇〇以上」と書かれても、自分の環境がそれを満たしているのか判断できず、敬遠されてしまう理由になるかもしれません。