今回の依頼は、WordPressのログイン画面を表示しようとすると500エラーが発生してしまい、ログインできないという問題です。
ブログの記事を公開しているページは問題なく表示されているのに、管理画面でエラーが発生している状態でした。
エラーログを解析したところ、以下のようなメッセージが表示されていました。
PHP Fatal error: Uncaught Error: Cannot create references to/from string offsets in /home/XXX/html/wp-includes/user.php:56
Stack trace:
#0 /home/XXX/html/wp-login.php(784): wp_signon(”, ”)
Stack trace:
#0 /home/XXX/html/wp-login.php(784): wp_signon(”, ”)
この問題はPHP7.1の環境で、古いWordPressを利用しているのが原因でした。
英語ですが、こちらのページにて説明があります。
修正方法は、wp-login.phpを以下のように書き換えました。
修正前: $user = wp_signon( ”, $secure_cookie );
修正後: $user = wp_signon( array(), $secure_cookie );
修正後: $user = wp_signon( array(), $secure_cookie );
これにより無事にログイン画面が表示されるようになりました。
なお、この部分は最新版のWordPressでは既に修正済みなので、WordPressをバージョンアップすれば自動で適用されます。