はる日記

WordPressで更新したら Parse error: syntax error, でログインできなくなった

こんにちは。
このブログの事ではないのですが、先日、WordPressを使ってホームページを公開している人から

「ワードプレスに久々にログインしてみたら、更新がいっぱいあったから更新したんだ。そしたら、ログインできなくなったから見てほしい」

と言われてログイン画面のURLが送られてきました。
そのURLをクリックすると、

Parse error: syntax error, unexpected '[', expecting ')' in /home/〇〇/〇〇.com/〇〇/〇〇/wp-content/plugins/wp-members/includes/class-wp-members-captcha.php on line 332

というエラーが出て、ワードプレスへのログイン画面が出てきません。

当然、ホームページも表示されない状態になってました。

syntax error
どうやら、更新を押したらPHPの構文エラーが出ちゃったみたいです。

原因は、サーバーのPHPのバージョンが古かったこと。

ワードプレスではなく、レンタルしてるサーバーにログイン後、
PHPのバージョンを上げれば直ります。

PHPバージョン5.3(非推奨)になってました。

しかし、古いサイトで、動的ページがたくさんあるため、PHPのバージョンを上げてしまうと、
どこで動かなくなるかわからないということで、PHPを直接修正することに!

FTPで接続し、問題のclass-wp-members-captcha.php 332行目を見てみると、

            $url = $recaptcha_verify_url . http_build_query([
                'secret' => $secret,
                'response' => $captcha,
                'remoteip' => wpmem_get_user_ip(),
            ]);

と書かれています。

どうやらこの書き方はPHPバージョン5.4以降じゃなければダメなようです。
なので、以下のように修正

            $srr = array('secret' => $secret, 'response' => $captcha, 'remoteip' => wpmem_get_user_ip() );
            $url = $recaptcha_verify_url . http_build_query( $srr );

array文を使って書かないといけないようです。

古くからあるページを時代に合わせて更新していくのって、大変ですよね。

-はる日記
-,