【Elementor】Xserverへのサーバー移管で500エラーが発生したときの対処法|.htaccessとphp.iniの変更方法

server-cloud-kv-prograshi(プロぐらし)-kv Server
記事内に広告が含まれていることがあります。
[PR]

レンタルサーバーをLolipopからXserverに移管したところ、Elementor以外のWordPressサイトは移管後にWEBサイトが表示されましたが、Elementorで構築したWEBサイトは以下のような500エラーページが表示されました。

エラーの内容

500 Internal Server Error
アクセスしようとしたページは表示できませんでした。
CGIやPHPなど内部参照におけるエラーの為、目的のページが表示できなかったことを意味します。

以下のような原因が考えられます。
断続的に発生する場合:
CGIの負荷が大きい(CGIプロセスが多数動作している)。

常に発生する場合:
CGIのパーミッション設定に誤りがある。 / CGIのソースコードに問題がある。/ .htaccess の記述に誤りがある。



なお、私は元々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で行う必要があります

Xserverの.htaccessの仕様

「.htaccessの記述の誤り」
.htaccessに対するエラーにて「Invalid command ‘*‘」や「Expected before end of configuration」などがエラーログにある場合、.htaccessの記述が誤っている可能性が考えられます。

また、「php_flag」などのPHPに関する各種設定を.htaccess上に記述した場合もエラーが発生します。PHPの設定は「php.ini設定」にて行ってください。

※エックスサーバーでは.htaccessファイルの記述ルールに関する技術的なサポートはいたしておりませんので、ご了承ください。

Xserver: 「500 Internal Server Error」というエラーが表示されてホームページが見られません。



対処法

.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 > システム情報」へと進みます。


正しく設定されていることが確認できました。

MEMO

次のような方法でもphp.iniの設定が反映されているか確認することができます。

下記のようなPHPファイルを作成し、サーバーにアップロードしてご確認ください。

<?php
phpinfo();
?>

※PHP設定値確認後は作成したphpファイルは削除してください。




(参考)PHPバージョンを合わせる

移管前と移管後のPHPバージョンを確認したところ、ズレていたのでこちらも念のため合わせておきました。

移管前は「7.4系」になっています。


移管後は「8.1系」になっています。


メジャーバージョンが変わってしまっているので、ダウングレードして「7.4系」にします。

MEMO

Elementorは通常、PHP 7.4以降を推奨しています。



タイトルとURLをコピーしました