バックエンド 2026.01.01

500エラーで真っ白画面!緊急復旧の完全手順と原因特定方法

約6分で読めます

サイトが突然500エラーで真っ白になった時の緊急対応手順を解説。ログ確認から原因特定、復旧まで実践的な解決方法をご紹介します。

サイトが真っ白!こんな緊急事態に遭遇していませんか?

朝一番にメールを確認すると「サイトが見れません」という緊急連絡。慌ててサイトにアクセスすると、画面は真っ白で「Internal Server Error」のメッセージ。お客様からの問い合わせも止まり、ECサイトなら売上に直結する深刻な状況です。

「何から手をつければいいかわからない」「サーバーの知識がなくて不安」という方に向けて、20年以上のWeb制作経験をもつ当社が、緊急時の対応手順を体系的にご説明します。

500エラーが発生する主な原因

実際のトラブル対応で遭遇した500エラーの原因を頻度順にご紹介します:

1. PHPのメモリ不足・実行時間超過(40%)

  • 大量のデータ処理や画像アップロード時に発生
  • WordPressの重いプラグインが原因の場合も

2. ファイルのアクセス権限エラー(25%)

  • FTPでファイルアップロード時の権限設定ミス
  • セキュリティ強化後の権限変更の影響

3. プログラムのコードエラー(20%)

  • 更新作業中の構文エラー
  • データベース接続設定の誤り

4. .htaccessファイルの記述ミス(10%)

  • リダイレクト設定の記述エラー
  • セキュリティ設定の構文ミス

5. サーバーリソース不足(5%)

  • ディスク容量満杯
  • データベースの負荷過多

緊急時の復旧手順:まずは3分で現状把握

STEP1:エラーログの確認

最も重要なのはエラーログの確認です。憶測で対応するより、まず原因を特定しましょう。

# サーバーのエラーログ確認(一般的な場所)
tail -f /var/log/apache2/error.log
# または
tail -f /var/log/nginx/error.log

# PHPエラーログの確認
tail -f /var/log/php_errors.log

レンタルサーバーの場合は、コントロールパネルから「エラーログ」を確認できます。

STEP2:直前の変更内容を思い出す

あるクライアントでは、WordPressのテーマ更新直後に500エラーが発生。すぐに前のバージョンに戻すことで5分で復旧できました。

  • ファイルのアップロード
  • プラグインの有効化
  • 設定変更
  • データベースの操作

「何も変更していない」と思っても、実は自動更新が動いていることがあります。

STEP3:一時的な回避措置

原因特定に時間がかかりそうな場合は、まずサイトの表示を復旧させることを優先します。

// デバッグモードを有効にして詳細エラーを表示
// wp-config.php または .envファイルに追記
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);

原因別の具体的な解決方法

PHPメモリ不足の解決

症状: ログに「Fatal error: Allowed memory size exceeded」

// .htaccessに追記
php_value memory_limit 256M
php_value max_execution_time 300

// またはwp-config.phpに追記
ini_set('memory_limit', '256M');

当社で対応したECサイトでは、商品画像の一括処理でメモリ不足が発生。メモリ上限を128Mから256Mに変更することで解決し、その後は安定して動作しています。

ファイル権限エラーの解決

症状: ログに「Permission denied」

# WordPressの推奨権限設定
find /path/to/wordpress/ -type d -exec chmod 755 {} \;
find /path/to/wordpress/ -type f -exec chmod 644 {} \;
chmod 600 wp-config.php

よくある失敗: 777権限を設定してしまうケース。セキュリティ上危険なので避けましょう。

データベース接続エラーの解決

// 接続テスト用の簡単なスクリプト
<?php
$host = 'localhost';
$dbname = 'your_database';
$user = 'your_username';
$pass = 'your_password';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
    echo "データベース接続成功";
} catch(PDOException $e) {
    echo "接続エラー: " . $e->getMessage();
}
?>

予防策:500エラーを未然に防ぐ方法

1. 定期的なバックアップ体制

実際のトラブル事例では、バックアップがあったサイトは平均15分で復旧、なかったサイトは数時間から数日かかりました。

  • ファイル・データベースの自動バックアップ設定
  • 復旧テストの実施(年1回推奨)
  • 複数世代でのバックアップ保存

2. 監視体制の構築

# 簡単な死活監視スクリプト例
#!/bin/bash
url="https://your-site.com"
status=$(curl -o /dev/null -s -w "%{http_code}" $url)

if [ $status -ne 200 ]; then
    echo "サイトエラー検出: HTTP $status" | mail -s "緊急:サイト障害" [email protected]
fi

3. 段階的なデプロイ

失敗談: 本番環境で直接コード修正をして500エラーを引き起こしたケース。必ず以下の手順を踏みましょう:

  1. ローカル環境でのテスト
  2. ステージング環境での動作確認
  3. 本番環境への適用
  4. 動作確認とロールバック準備

まとめ:緊急時こそ冷静な対応を

500エラーは確かに深刻な問題ですが、適切な手順で対応すれば必ず解決できます。重要なのは:

  • エラーログを確認して原因を特定する
  • 憶測でなく事実に基づいて対応する
  • バックアップから迅速に復旧する体制を整える

当社では、これまで数百件の緊急対応を行い、平均復旧時間を30分以内に短縮してきました。「自社で対応するのは不安」「専門知識がない」という場合は、迷わずプロにご相談ください。

今すぐできること:

  1. 現在のエラーログを確認する
  2. 最新のバックアップがあるか確認する
  3. 緊急連絡先を整理しておく

もし現在500エラーでお困りの場合は、お気軽にお問い合わせください。神奈川拠点の当社が、迅速かつ確実にサイト復旧をサポートいたします。

この記事をシェア

AIに無料相談