先日、とあるお仕事でAWSで環境構築し、有料WordPressテーマ「JIN」を入れたのですが、上手く表示されませんでした。
その時の調査方法とそのときの対処法の備忘録です。
実施した環境構築
実際に環境構築したときの手順です。
まず、AWSのサーバーは公式の手順に則って作成し、WordPressのインストールまで完了させました。とくに追加で特別なことはしていません。
スケーラブルなウェブサイトの構築方法
続いてDLしたJINのテーマを通常通り管理画面からZIPファイルをアップロードして、インストールしました。
画面が真っ白に
インストールして有効化したのでURLにアクセスすると、、、真っ白。
管理画面はJINの画面になってるので、テーマのインストールエラーではありません。
投稿とかしてみても登録できるし、管理画面も出るからデーターベースも接続できてる。
検証ツール見て見ると、headまでは読み込めていて、Body以下が表示されていない様子。
試しに、別の公式テーマをインストールしてみて有効化して見ると、問題なく表示されるので、JINの内部が何か原因がある模様。
対処法
とりあえず困った時は公式サイトへ。
ちゃんと不具合時の対処法も書いてありました!
WordPressテーマがインストールできない場合の対処法【解決マニュアル】
インストールし直す
公式に以下のようにあったので、一度削除してからインストールし直して見ました。
WordPressの不具合?で、テーマインストールに失敗する(画面が真っ白になる)こともあります。
その場合は、一度アップロードしたテーマを削除して、もう一度アップロードすることで正しくインストールできますのでお試しください。
画面を見てみると、やっぱり真っ白…
インストールの不具合ではない様子。
デバックモード起動
WordPressはデフォルトでデバックモードが無効になっておりエラーが表示されないので、デバックモードを有効化します。
wp-config.phpを開き、デバックモードの記述がFalseになっているので、それをTrueにするとエラー文が出るようになります。
define('WP_DEBUG', true);
画面を開くと、以下のエラーが出ました。
Can’t use function return value in write context in
(訳:関数の戻り値を使用できません)
公式サイトに書いてあるPHPのバージョンが古いことが原因のようです。
「Fatal error: Can’t use function return value in write context in」というエラーが出てが表示されてテーマが適用できない場合は、PHPのバージョンをご確認ください。
古いバージョンだとテーマがインストールできない場合があるので、新しいバージョン(php7.0以上)に切り替えることを推奨いたします。
念のためエラーが出ているソースコードも見てみました。
エラーが出ているのはヘッダーのここ。
if( empty(is_title_text()) ):
empty関数が影響しているので、やっぱりPHPのバージョンが原因なよう。
PHP 5.5 より前のバージョンでは、empty() がサポートするのは変数だけです。 それ以外の値をチェックするとパースエラーになります。
PHPのバージョンアップ
サーバーに接続し、PHPのバージョン確認
$ php -v
PHP 5.3.29 (cli) (built: May 12 2015 22:42:19)
PHP 5.3.29か…
それはエラーでますね。
バージョンアップして、再度確認
$ php -v
PHP 7.2.12 (cli) (built: Nov 6 2018 16:57:52) ( NTS )
無事にPHP7になりましたので、再度画面チェックしたら無事に表示されました。
まとめ
- AWSでWordPress環境を作った時はPHPのバージョンに注意
- テーマをインストールして画面が白くなる時は、PHPのバージョンを確認
調査と対処で2時間以上も費やしてしまった。
色々と勉強になりました。