こんにちは。
このブログの事ではないのですが、先日、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文を使って書かないといけないようです。
古くからあるページを時代に合わせて更新していくのって、大変ですよね。