WordPressサイトをhetmlからロリポップにサーバー移転したときに、500エラーが出て小一時間悩みました。
500エラーはPHPのエラーに起因して発生します。
この記事では、Wordpressの500エラーの解析方法と、サーバー変更時に500エラーとなった原因について説明しています。
500エラーが出た時は、wp-config.phpのdebugをONにする
define( 'WP_DEBUG', true );
500エラーの意外な原因とは?
デバッグモードを有効にすると、エラーが表示されるようになりました。
Parse error: syntax error, unexpected end of file in the line
ファイルの最後で、エラーが出ました。
エラーの原因は、if文の{}が閉じられていないためですが、{}はありました。
{}が認識されない原因は、テーマファイル内でPHPのショートタグを使っていたためでした。
移転前のサーバーでは、ショートタグを有効化していたのでしょうけど、移転後のサーバーでは有効化していなかったのでPHPのエラーになりました。
PHPのショートタグとは?
<?php ?>と書くのが普通ですが、ショートタグを有効化すると、
<? ?>と書くことができるようになるというものです。
php.iniの設定項目「short_open_tag」でショートタグを有効化する
short_open_tag = On
.htaccessでショートタグを有効化する
php_flag short_open_tag Off
まとめ
500エラーが出たら、wp-config.phpでdebugを有効にする。
Parse error: syntax error, unexpected end of file in the line
ソースコードを変更していないのに上記のエラーになった場合には、ショートタグを疑ってみる。