WordPress PHP7.3にしたら [HTTP ERROR 500]
レンタルサーバのロリポップ!がスペックのアップデート #
【アップデートによる仕様変更】
- EC-CUBE簡単インストールが利用できなくなります。
- 現在の共有SSLのアドレスは利用できなくなり、ロリポップ!のドメインがSSL化されます。
- PHP7.3および7.4のみ利用できるようになり、PHP7.1は利用できなくなります。
- Perlのバージョンが5.10から5.30へ変わります。また「/usr/bin/perl」のパスが利用できなくなります。
- Rubyのバージョンが2.6へ変わります。Ruby1.9および2.0は利用できなくなります。
- Pythonのバージョンが3.7へ変わります。Python2.7および3.4は利用できなくなります。
- .htaccess内のAllowやDenyといったIP制限などの構文の後ろにコメントアウトがついていると、エラーになります。
【アップデート完了までの所要時間】
- ご利用のサーバーのデータ量やファイル数によって、数分から最大で一日程度の時間が掛かります。
アップデート前にWordPressの確認 #
現行のWordPressがPHP7.1以下で利用している場合、PHP7.2以上で動作できるかを確認する。
テーマやプラグイン全てを確認する。未対応の場合はテーマやプラグインを別の物で代替できないか検討する必要がある。
どの部分に問題があるのかは「PHP Compatibility Checker」というプラグインで調べられます。
警告やエラーが出ているコードの修正が完了したら、PHPのバージョンアップをしましょう。
PHPをバージョンアップしたら「データーベース接続確立エラー」になった #
PHPバージョンを5.xから7.xに変更しただけだと、WordPressを開こうとすると「データーベース接続確立エラー」が出て、Webサイトが表示されなくなってしまう場合があります。
「データーベース接続確立エラー」への対処としてやることは2つ。
- データーベースのパスワードの再設定
- wp-config.phpの修正
MySQLデーターベースのパスワードを再設定する #
データーベースのパスワードが古いパスワード形式である「old_password形式」の場合に、PHPバージョン変更したことによりデーターベースに接続ができなくなります。
これを解消するには「native_password形式」にする必要がありますが、データーベースのパスワードを再設定すれば、自動で「native_password形式」に切り替わります。
wp-config.phpの修正 #
データーベースのパスワードを再設定したら、WordPressのwp-config.phpの修正をしましょう。
wp-config.phpを開いて「MySQL データーベースのパスワード」を新しいパスワードに書き換えればOKです。
(パスワードの再設定を旧パスワードと同じにすれば修正は不要)
表題である [HTTP ERROR 500]になってしまった。 #
サーバー内部でエラーが発生しているときに表示されるエラーメッセージで、つぎのような問題が考えられる。
- .htaccess の記載ミス
- CGIやPHPなどの文法ミス
- ファイル、ディレクトリの権限
- サーバー負荷
- プラグインの問題
十分に注意してPHPバージョンアップして[HTTP ERROR 500]なってしまった場合、一番考えられるのが「プラグインの問題」と思われます。
しかしWordPressの管理画面にもログインできないのでサーバへFTPログインし、pluginsフォルダにある一度削除(または一時的にフォルダ名変更)する。
これでWordPressサイトは正常に表示できるはずです。
管理画面からプラグインを1つづつ再インストールまたはFTPで変更したフォルダ名を元に戻して悪さをしているプラグインを探しましょう。
フロントページは表示されたが管理画面が「真っ白」 #
「管理画面真っ白」への対処としてやることは2つ。
- wp-config.php をデバッグモードにしてエラーの確認
- wp-login.php の修正
一時的にワードプレスをデバックモードにして、試しにワードプレスの管理画面にアクセスしてみます。
WordPressをインストールしたディレクトリ内にある wp-config.php を編集します。
define(‘WP_DEBUG’, false); を define(‘WP_DEBUG’, true); にするだけでデバッグモードが有効化されます。
書き換え前
define('WP_DEBUG', false);
書き換え後
define('WP_DEBUG', true);
wp-config.php内にdefine(‘WP_DEBUG’, false); の行が無い場合はwp-config.phpの先頭にdefine(‘WP_DEBUG’, true);を追記します。
一時的にワードプレスをデバックモードにして、管理画面にアクセスするとエラーが出力されます。
Warning: Illegal string offset ‘remember’ in /XXX/XXX/wordpress/wp-includes/user.php on line 41 Warning: Cannot assign an empty string to a string offset in /XXX/XXX/wordpress/wp-includes/user.php on line 41 Warning: Illegal string offset ‘user_login’ in /XXX/XXX/wordpress/wp-includes/user.php on line 56 Fatal error: Uncaught Error: Cannot create references to/from string offsets in /XXX/XXX/wordpress/wp-includes/user.php:56 Stack trace: #0 /XXX/XXX/wordpress/wp-login.php(776): wp_signon(”, ”) #1 {main} thrown in /XXX/XXX/wordpress/wp-includes/user.php on line 56 |
PHP5.x系からPHP7.x系にアップデートすると、このエラーが起こるようです。
ワードプレスのディレクトリの直下にある「wp-login.php」にある下記のコードを書き換えます。
書き換え前
$user = wp_signon( '', $secure_cookie );
書き換え後
$user = wp_signon( array(), $secure_cookie );
これでエラーが解消され管理画面にログインできるようになります。
※作業が終わったら wp-config.phpのデバッグモードdefine(‘WP_DEBUG’, true);をdefine(‘WP_DEBUG’, false);に戻すのを忘れないようにしましょう。デバッグは管理ページだけでなくフロントページにも表示されます。 |
テーマ BizVektor を使用している場合 #
サイトがフロント画面も管理画面も真っ白
PHP7.x にアップグレード後の症状
- フロント画面も管理画面(ログイン)も表示されない
- デバッグモードにすると下記のエラーが表示される
Fatal error: ‘break’ not in the ‘loop’ or ‘switch’ context in /XXX/XXX/wordpress/wp-content/themes/biz-vektor/design_skins/003/003_custom.php on line 23 |
解決方法 #
エラーを出力しているファイル「003_custom.php」を修正します。
23行目の「break」をコメントアウトするだけです。
003_custom.php ファイルは以下のフォルダにあります。
wp-content/themes/biz-vektor/design_skins/003/
修正前の 003_custom.php 23行目
break;
修正後の 003_custom.php 23行目
// break;
これはテーマ側に問題があったケース
- カテゴリー
- トラブルシューティング