WordPress テーマやプラグインのインストール時に、次のようなエラーが発生した場合:
Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /home/.../wp-content/themes/.../xxxxx.php on line 111
テーマや関数に匿名関数(Anonymous function)が使用される場合、このような問題が発生する可能性があります。
匿名関数とは...
$greet = function($name) { printf("Hello %s\r\n", $name); }; $greet('World'); $greet('PHP');
匿名関数は通常の関数と似ていますが、名前が示すように 匿名関数は名前がありません。 上記のコードは、http://php.net/の Anonymous functionsページに出てきた匿名関数の例です。 ここで
- functionキーワードと開始括弧( ')')の間に 関数名がありません.
- 関数の定義は、次のセミコロン(;)があります。 これは、一般関数定義は「コード構文」であるのに対し、匿名関数定義が「表現式」であるためです(PHP Anonymous Functions:What Are They、and Why Use Them? を参照)。
問題の解決方法
匿名関数は、PHP 5.3バージョンから導入されました。 したがって、PHPのバージョンを5.3以降のバージョンにアップグレードすると、問題が解決されます。 PHPのバージョンを確認するには、 phpinfo()関数を使用します。
Webホスティングサービスを利用する場合のホスティング会社で簡単にPHPのバージョンをアップグレードするためのオプションを提供していますが、そうでない場合は、ホスティング会社に連絡してPHPのバージョンの更新を要求する必要があります。
この方法で問題を解決できない場合はテーマの作成者やプラグインの作成者に連絡して、問題の解決を要求するようにしてください。
追加:PHPのバージョンをアップグレードすることができない場合
PHPのバージョンを更新することができない場合:
まず、問題となる部分の関数を検索します。
add_action('widgets_init', function() { return register_widget('Fanoe_Social_Media_Widget'); });
問題となる関数が上記のような関数形であれば、以下のような形式に変更してみましょう(参照).
// Fanoe_Social_Media_Widget 등록 function register_fanoe_social_media_widget() { register_widget( 'Fanoe_Social_Media_Widget' ); } add_action( 'widgets_init', 'register_fanoe_social_media_widget' );
その後、一時的に問題を解決することができます。
2018年追加 - WordPress
2018年現在 WordPress 推奨PHPのバージョンは7.2です。
WordPress推奨バージョンのPHPを7.2以上に調整
WordPressを使用する場合は、なるべく7.1あるいは7.2以上を使用することが望ましい。 PHP 5は2018年12月末にサポートが終了するため、サポートが終了した後には、安全でないことがあります。
PHP 5が2ヶ月後に寿命が終了して、セキュリティ更新プログラムが中断されます
ちなみに海外ホスティング SiteGroundでは現在のPHP 7.3をサポートします。 Bluehost 共有ホスティングの場合2018年11月現在PHP 7.0までサポートしますが、近いうち新しいPHPバージョンのサポートを追加する予定だとします。
※2019年12月更新: SiteGroundは、PHP 7.4までサポートしてい BluehostはPHP 7.3までサポートしています(」BluehostでPHPのバージョンとPHPの設定値を変更する(新しいcPanelインターフェース)"参照)。
※ Parse error: syntax error, unexpected '.', expecting '&' or T_VARIABLE in /host/home/xxxxxxx/html/wp-content/plugins/post-terms-order/include/pto_walkers.php on line 135のようなエラーが発生した場合でも、PHPのバージョンをアップグレードすると、問題が解決されます。
コメントを残す