運用情報

投稿者: SPIRERS ナレッジ向上チーム 2023年3月10日 (金)

500エラー発生ケース まとめ

SPIRAL ver.2のサイト機能では 500 Internal Server Error(以下、500エラー)が発生することがあります。
発生原因の特定ができない、特定に時間がかかり、本来の業務に支障をきたす可能性も考えられるため、
その際の参考となるようエラー発生ケースをまとめました。
※ご紹介する発生ケース以外にも500エラーが発生する可能性がございます。

発生原因の大まかな分類

500エラーが発生する原因は、大まかには以下のように分類できます。
標準機能の設定ミスが原因
ブロックで使用しているフィールドがDBから削除されている等の不整合によって500エラーが発生します。
そのほか具体的な例を以下にてご紹介しています。ご参考ください。
ソースコードのミスが原因
サイト機能のページやブロックに記述したPHPやThymeleafの記述が誤っており500エラーが発生します。
通信障害などによるエラーが原因
各種通信の状況により500エラーが発生します。

標準機能の設定ミスによる発生ケース

具体的なケースに以下のようなものが挙げられます。
必要なブロックのリリース漏れ
ログインフィルタで使用する参照フィールドがDBから削除されている
詳しくは該当するサポートサイトをご参考ください。

ソースコードのミスによる発生ケース

具体的なケースに以下のようなものが挙げられます。
Thymeleafの実行でエラーが起きている
Thymeleafの記述が誤っている
(例)
- PHPからThymeleaf側に引き渡す処理の記述が漏れている
- 分岐処理で異なる型を比較しようとしている
-
inputs['f0XX']
siteClient.record[XX]
などでフィールドに定義されていないものを出力しようとしている
※"f0XX"、"XX"にDBのフィールドのIDが入ります。フィールドIDの確認場所はこちらをご参考ください。
(参考)【初級編】Thymeleafの使い方
PHPの実行でエラーが起きている
・構文が誤っている
・全角スペースが入っている
・SPIRAL ver.2 の独自関数が使用できないページで使用されている
(例)
- 認証なしページで
getAuthRecordByFieldId()
を使用している
- 登録/更新フォームの完了ステップ以外で
getRecordValue()
を使用している

SPIRAL ver.2 はThymeleafを使用して、PHPの実行結果を画面に表示します。
PHPのエラーを特定する(デバッグ)には以下のように記述ください。
この書き方をすると、PHPのエラー時に500エラーを表示させずエラーメッセージが出せるので、
デバッグが可能です。

<div th:if="${cp.result.isSuccess}">
    // PHP成功時に表示するエリア
</div>
<div th:if="${!cp.result.isSuccess}">
    // PHPエラー発生時に表示するエリア
    // 発生したエラーメッセージが表示されるため、エラー文言を設定する必要はありません
     <p th:text="${cp.result.errorMessage}">error message</p>
</div>
<div th:if="${cp.result.isSuccess}">...</div>
の外にPHPのタグがある場合にエラーとなります。


(参考) PHP SPIRAL ver.2 サポートサイト

通信障害などによるエラーの発生ケース

具体的なケースに以下のようなものが挙げられます。
一時的なアクセス集中によりレスポンスが低下している
大規模なキャンペーン等による一時的なアクセス集中が発生した際に、SPIRAL ver.2 のサーバーのレスポンスが低下し、一時的に500エラーが発生します。
SPIRAL ver.2と連携するサービス(WordPress等)の処理が不安定になっている
各種サービスのお問い合わせ窓口までご連絡ください。
SPIRAL ver.2で障害が発生している
弊社で障害を検知した場合は速やかにユーザへ通知を行っています。
障害が疑われる場合はお問い合わせまでご連絡ください。

最後に

500エラーが発生した際は、今回ご紹介した発生ケースを参考にしてみてください。

解決しない場合はこちら コンテンツに関しての
要望はこちら