レンタルサーバーをLolipopからXserverに移管したところ、Elementor以外のWordPressサイトは移管後にWEBサイトが表示されましたが、Elementorで構築したWEBサイトは以下のような500エラーページが表示されました。
なお、私は元々Lolipopで運用していたのですが、数年間運用することでLolipopの重大な問題が発覚したために、いろいろと調べて、Xserverに移管することにしました。
移管に至った経緯や、XserverとConoha Wingの比較などについては下記をご参考ください。Xserverの料金が1万円引きになるリンクも紹介しています(私の場合これが最終的な決め手でした)
移管時に500エラーが発生しうる原因
Elementorを使用しているWordPressサイトをレンタルサーバーに移管した際に500エラーが発生する場合、以下のような原因が考えられます。
PHPバージョンの不一致
サーバーのPHPバージョンがElementorやWordPressの要求するバージョンと一致していない場合、エラーが発生することがあります。
メモリ不足
Elementorは大規模なページビルダーであり、多くのリソースを消費します。レンタルサーバーのPHPメモリ制限が低い場合、メモリ不足により500エラーが発生することがあります。
プラグインやテーマの互換性問題
Elementorまたは他のプラグインが現在のWordPressテーマや他のプラグインと互換性がない場合、500エラーが発生することがあります。
この場合は、サーバーのファイルマネージャーまたはFTPでアクセスし、wp-content/pluginsフォルダの名前を一時的に変更して全てのプラグインを無効化します。
その後、サイトが正常に動作するか確認し、エラーが解消された場合はプラグインを一つずつ有効化して、問題のあるプラグインを特定します。また、テーマをデフォルトテーマに一時的に切り替えてみることも有効です。
.htaccessファイルの問題
サイト移管時に.htaccessファイルの記述に誤りが生じた場合、サーバーの設定でエラーが発生することがあります。
.htaccess
ファイルをリセットします。具体的には、.htaccess
ファイルを一時的にリネームし、WordPress管理画面にアクセスして「設定 > パーマリンク」を保存することで、新しい.htaccess
ファイルが自動生成されます。
発生原因(これが原因)
今回のXserverにWebサイトを移管したときに発生した500エラーの原因は、上記の「.htaccessファイルの問題」でした。
対処2: メモリ不足
Elementorはかなり大きなメモリを消費します。このため、ElementorでWEBサイトを構築するときはデフォルトの設定のままだと500エラーが表示されてしまいます。
旧サーバー(Lolipop)では.htaccessに「php_value」の記述をすることで、ディレクトリ毎にphp.iniの設定を書き換えることができました。
php_value post_max_size 64M
php_value memory_limit 128M
php_value max_input_vars 2000
php_value upload_max_filesize 32M
Xserverではphp.iniの設定をより厳密に行っているため、.htaccessにPHP設定を記述するとエラーが発生する仕様になっています。
XserverではPHPの設定はphp.iniで行う必要があります。
対処法
.htaccessのphp_valueを削除
.htaccessの以下の記述を削除したところWEBサイトが正常に表示されました。
php_value post_max_size 64M
php_value memory_limit 128M
php_value max_input_vars 2000
php_value upload_max_filesize 32M
php.iniを編集する必要はない
.htaccessの記述を削除したので、直接php.iniを設定しなければいけないか?というと、そんなことはありません。
Xserverの場合、デフォルトでかなり大きな数値が割り当てられています。
ElementorでWEBサイトを構築するときに500エラーの発生原因となる、PHP Memory Limitは1Gです。
ファイルのアップロードに関わるMax Post SizeやMax Upload Sizeも1GBです。えげつないですね!(最高です!)
max_input_varsはphp.iniで設定する
php.iniの設定方法
PHPで使用可能な変数の上限を指定する「max_input_vars」はLolipopと同じ1000になっています。
オンライン決済予約システムを導入したWEBサイトを構築した際に、1000で上限に達してしまい、2000に上げた経緯がありました。
このような場合は「max_input_vars」の値をphp.iniで直接変更する必要があります。
「サーバーパネル」に入って「PHP > php.ini設定」へと進みます。
対象のドメインを選択します。
上部のタブで「php.ini直接編集」を選択し、以下を追記します。
max_input_vars = 2000
「確認画面へ進む」をクリックします。問題なければ「確定」をクリックします。
以上で設定は完了です。
確認方法
php.iniの内容が正しく反映されているか確認します。
WordPress管理画面で「Elementor > システム情報」へと進みます。
正しく設定されていることが確認できました。
(参考)PHPバージョンを合わせる
移管前と移管後のPHPバージョンを確認したところ、ズレていたのでこちらも念のため合わせておきました。
移管前は「7.4系」になっています。
移管後は「8.1系」になっています。
メジャーバージョンが変わってしまっているので、ダウングレードして「7.4系」にします。