Parse error: syntax error, unexpected T_FUNCTION, expecting ')' ... エラー

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ページに出てきた匿名関数の例です。 ここで

  1. functionキーワードと開始括弧( ')')の間に 関数名がありません.
  2. 関数の定義は、次のセミコロン(;)があります。 これは、一般関数定義は「コード構文」であるのに対し、匿名関数定義が「表現式」であるためです(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のバージョンをアップグレードすると、問題が解決されます。

メモ:


コメントを残す

*メールアドレスは公開されません。