PHPのバージョンを7.3(CGI)に上げたとき、505エラーが発生した。いろいろ調べた結果、何とか直ったので、参考になったサイトを紹介する。
ちなみに、当方の環境は、ロリポップとムームードメインだ。
前提として、これをすれば必ず505エラーが直るというわけではない。直すときは自己責任でお願いします。
505エラーの直し方
調べてみると、どうやらPHPをバージョンアップした際に起こるエラーとのこと。
具体的にはPHP5.x系からPHP7.x系にアップデートすると、このエラーが起こるようです。FTP経由でワードプレスのディレクトリの直下にある「wp-login.php」にアクセスし、780行目付近にある下記のコードを書き換えることで、エラーが解消されました。
書き換え前
$user = wp_signon( ”, $secure_cookie );
書き換え後
$user = wp_signon( array(), $secure_cookie );
経過内容
エラーが起きるまで、いろいろな作業をしていたため、それらも紹介する。
1.「.htaccess」をFTPソフトで変更した
具体的には、「.htaccess」の「RewriteRule ^wp-admin 404-siteguard [L]」を削除した。
「SiteGuard WP Plugin」が関係しているらしい。
2.「.htaccess」を初期化した
「「.htaccess」をいじったからおかしくなった!」と思い込んでいたため、「.htaccess」を初期化した。
[php]
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress[/php]
自分はプログラマーではないので、「.htaccess」の初期化というのがよく分からないのだが、とにかく、初期化した。
3.プラグインをすべて無効化した
次に、filezillaからサイトの「plugins」を「plugins0」のように変更して、プラグインを無効化した。
だが、これに意味はない。
エラー内容
以下から、エラーログに出た内容をのせる。
[php]Warning: Illegal string offset ‘remember’ in /home/users/1/xxx/web/xxx/wp-includes/user.php on line 41
Warning: Cannot assign an empty string to a string offset in /home/users/1/xxx/web/xxx/wp-includes/user.php on line 41
Warning: Illegal string offset ‘user_login’ in /home/users/1/xxx/web/xxx/wp-includes/user.php on line 56
Fatal error: Uncaught Error: Cannot create references to/from string offsets in /home/users/1/xxx/web/xxx/wp-includes/user.php:56 Stack trace: #0 /home/users/1/xxx/web/xxx/wp-login.php(806): wp_signon(”, ”) #1 {main} thrown in /home/users/1/xxx/web/xxx/wp-includes/user.php on line 56[/php]
「xxx」には自分が設定した、フォルダの名前などが入る。
4つのエラーが出たので、「エラーが多くて大変だ」と思ったが、そこまで難しい作業ではなかった。
ちなみ、エラーの原因が分からない方は、以下のようにエラーログをオンにしてみよう。
- ユーザー専用ページ内の『サーバーの管理・設定』>『PHP設定』をクリック
- エラーが発生しているドメインの「php.ini」の「設定」をクリック
- 「display_errors」を「On」に変更
- 画面下部の「php.iniの変更」をクリック
- HTTP ERROR 500 が発生したページにアクセス