緊急対応手順
# 1. ログファイルの強制作成
mkdir -p storage/logs && touch storage/logs/laravel.log
chmod 664 storage/logs/laravel.log
# 2. セッションテーブル再作成
php artisan session:table
php artisan migrate:fresh --force
# 3. ファイル権限の再設定(sudo不要)
find storage -type d -exec chmod 775 {} \;
find storage -type f -exec chmod 664 {} \;
chmod -R 775 bootstrap/cache/
# 4. セッション設定の変更(sudo不要)
sed -i 's/SESSION_DRIVER=file/SESSION_DRIVER=database/' .env
sed -i 's/APP_URL=.*/APP_URL=https:\/\/pay.crypt.fan/' .env
# 5. キャッシュ再構築
php artisan config:cache
php artisan route:cache
php artisan view:cache
# 6. アプリケーション再起動
php artisan down && php artisan up
権限問題の根本解決
# 以下のコマンドをサーバー管理者に依頼
sudo usermod -aG www-data wwwcrypt
sudo chown -R wwwcrypt:www-data /home/wwwcrypt/public_html/pay.crypt.fan
sudo find /home/wwwcrypt/public_html/pay.crypt.fan -type f -exec chmod 664 {} \;
sudo find /home/wwwcrypt/public_html/pay.crypt.fan -type d -exec chmod 775 {} \;
検証コマンド
# セッション状態の確認
php artisan session:status
# セッションテーブルの確認
php artisan tinker --execute='dd(DB::table("sessions")->get());'
# ログの監視(別ターミナルで実行)
tail -f storage/logs/laravel.log | grep -E 'CSRF|Session'
永続的対策
.env
に追加設定:
SESSION_SECURE_COOKIE=true
SESSION_HTTP_ONLY=true
SESSION_SAME_SITE=lax
config/session.php
の修正:
'expire_on_close' => true,
'lottery' => [2, 100], // ガベージコレクション頻度を調整
- クーロン設定(毎日午前3時にセッションクリーンアップ):
(crontab -l 2>/dev/null; echo "0 3 * * * /usr/bin/php /home/wwwcrypt/public_html/pay.crypt.fan/artisan session:gc") | crontab -
注意点:sudo
コマンドが必要な部分はサーバー管理者の協力が必要です。