レンタルサーバーの設定を変えて、PHPのバージョンを7.1に変更すると、突如エラーが発生しました。
Parse error: syntax error, unexpected ‘new’ (T_NEW) in /xxxx/wp-content/plugins/exec-php/exec-php.php on line 22
これは、投稿記事内でPHPのコードを実行出来るようにするプラグイン「Exec-PHP」がPHP7.1以降に対応していないためのエラーです。
PHP7.1では、変数にクラスの参照代入ができなくなったためだそうで、プラグインのソースコードそのものに問題があることを示しています。
対策として、代わりのプラグインも試しましたが、同様にエラーが出たり、古すぎてWordPressの管理画面からは探せなかったりしてイマイチ。
ということで、ひとまず、Exec-PHP のコードそのものを変更して対処することにします。
プラグインのコードを変更するにはFTPクライアントなどから直接ファイルを開きます。
まずは、エラーの出ている、exec-php.phpを編集。
/wp-content/plugins/exec-php/exec-php.php
このファイルの22行目に、
1 |
$GLOBALS['g_execphp_manager'] =& new ExecPhp_Manager(); |
とありますので、 =& の &を削除します。
1 |
$GLOBALS['g_execphp_manager'] = new ExecPhp_Manager(); |
でも、これをしてもまた新たなエラーが発生します。
Parse error: syntax error, unexpected ‘new’ (T_NEW) in /xxxx/wp-content/plugins/exec-php/includes/manager.php on line 36
こんどは、manager.phpに問題があるようです。
/wp-content/plugins/exec-php/includes/manager.php
を開くと、36,37,38,39行目に同様に=&があります。
1 2 3 4 |
$cache =& new ExecPhp_Cache(); $this->m_ajax =& new ExecPhp_Ajax($cache); $this->m_runtime =& new ExecPhp_Runtime($cache); $this->m_admin =& new ExecPHP_Admin($cache); |
これも&を削除します。
1 2 3 4 |
$cache = new ExecPhp_Cache(); $this->m_ajax = new ExecPhp_Ajax($cache); $this->m_runtime = new ExecPhp_Runtime($cache); $this->m_admin = new ExecPHP_Admin($cache); |
他にも、
/wp-content/plugins/exec-php/includes/cache.php の22行目、39行目
/wp-content/plugins/exec-php/includes/ajax.php の64行目
にそれぞれ &= となっているところがあるので修正します。
これでエラーは出なくなります。