sunucuhataları
teknik çözüm merkezi
Ara Giriş Yap Üye Ol
🏠 Ana Sayfa 📚 Kurulum Rehberleri
Kategoriler
🌐 Web Sunucuları 🐧 İşletim Sistemleri 📦 Sanallaştırma & VPS 🖥️ Kontrol Panelleri 🔒 SSL & Güvenlik 📝 CMS & Uygulamalar 🗄️ Veritabanı 📧 Mail Sunucusu 🗨️ Forum ℹ️ Hakkımızda 📧 İletişim
Giriş Yap Üye Ol
Ana Sayfa CMS & Uygulamalar PHP Kurulumu PHP 502 Bad Gateway: PHP-FPM Yeniden Başlatma v...
🐘 PHP Kurulumu

PHP 502 Bad Gateway: PHP-FPM Yeniden Başlatma ve Sorun Giderme

PHP 502 Bad Gateway hatası genellikle PHP-FPM servisinin çökmesinden veya yanlış yapılandırılmış socket bağlantısından kaynaklanır.

📅 19 Nisan 2025 👁 8 görüntülenme ⏱ 5 dk okuma
𝕏 Paylaş
📋 İçindekiler göster/gizle

PHP 502 Bad Gateway Hatası Nedir?

502 Bad Gateway hatası, ön uç web sunucusunun (genellikle Nginx) arka uç sunucudan (PHP-FPM) geçersiz bir yanıt aldığında döndürdüğü HTTP durum kodudur. PHP-FPM (FastCGI Process Manager), PHP betiklerini çalıştıran bağımsız bir servis olarak çalışır. Nginx ve PHP-FPM arasındaki iletişim koptuğunda veya PHP-FPM yanıt veremez hale geldiğinde bu hata ortaya çıkar.

502 Bad Gateway
nginx/1.24.0

Hatanın Başlıca Nedenleri

1. PHP-FPM Servisi Çökmüş

PHP-FPM sürecinin tamamen durması en yaygın nedendir. Bellek yetersizliği, PHP kodu hatası veya sistem kaynakları tükenmesi PHP-FPM'i çökertebilir.

2. Socket Dosyası Sorunu

Nginx, PHP-FPM ile Unix socket veya TCP port üzerinden iletişim kurar. Socket dosyasının yanlış izinleri veya yanlış yol belirtilmesi 502 hatasına neden olur.

3. pm.max_children Yetersizliği

PHP-FPM'in işleyebileceği maksimum eş zamanlı istek sayısı pm.max_children ile belirlenir. Bu değer yetersiz kalırsa yeni istekler işlenemez ve 502 hatası oluşur.

4. PHP Script Zaman Aşımı

Uzun süre çalışan PHP betikleri, Nginx'in bekleme süresini aşabilir ve 502 hatası oluşabilir.

5. Yanlış Nginx-FPM Yapılandırması

Nginx yapılandırmasındaki yanlış socket yolu veya port numarası bağlantı hatasına yol açar.

Hızlı Tanı Adımları

# PHP-FPM servis durumunu kontrol et
sudo systemctl status php8.2-fpm

# PHP-FPM error log
sudo tail -50 /var/log/php8.2-fpm.log

# Nginx error log
sudo tail -50 /var/log/nginx/error.log

# Socket dosyasını kontrol et
ls -la /run/php/php8.2-fpm.sock

Çözüm 1: PHP-FPM'i Yeniden Başlatma

# PHP-FPM yeniden başlat
sudo systemctl restart php8.2-fpm

# Durumu kontrol et
sudo systemctl status php8.2-fpm

# Otomatik başlatmayı aktifleştir
sudo systemctl enable php8.2-fpm

PHP-FPM yeniden başlatıldıktan sonra site genellikle hemen çalışmaya devam eder.

Çözüm 2: Socket İzinlerini Düzeltme

PHP-FPM pool yapılandırmasını açın:

sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Şu ayarları kontrol edin ve düzeltin:

; Socket yolu
listen = /run/php/php8.2-fpm.sock

; Socket sahibi ve grubu - Nginx kullanıcısıyla eşleşmeli
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

; Pool kullanıcısı
user = www-data
group = www-data

Nginx yapılandırmasında socket yolunun doğru olduğunu kontrol edin:

location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

TCP port kullanmak isterseniz:

# www.conf dosyasında
listen = 127.0.0.1:9000

# Nginx yapılandırmasında
fastcgi_pass 127.0.0.1:9000;

Çözüm 3: pm.max_children Değerini Artırma

www.conf dosyasını düzenleyin:

sudo nano /etc/php/8.2/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500

Doğru pm.max_children değerini hesaplamak için:

# Her PHP-FPM süreci ortalama ne kadar RAM kullanıyor?
ps --no-headers -o "rss,cmd" -C php-fpm8.2 | awk '{ sum+=$1 } END { printf "%d MB\n", sum/NR/1024 }'

Örneğin her süreç 30MB kullanıyorsa ve 1GB RAM ayırdıysanız: 1024 / 30 ≈ 34 süreç çalıştırabilirsiniz.

Çözüm 4: Nginx ve PHP-FPM Zaman Aşımı Ayarları

server {
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_read_timeout 300;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
    }
}

PHP-FPM tarafında:

; www.conf dosyasında
request_terminate_timeout = 300s

PHP.ini'de:

max_execution_time = 300
max_input_time = 300

Çözüm 5: Otomatik PHP-FPM Yeniden Başlatma

PHP-FPM çöktüğünde otomatik yeniden başlaması için systemd override dosyası oluşturun:

sudo systemctl edit php8.2-fpm
[Service]
Restart=always
RestartSec=5s
StartLimitInterval=60s
StartLimitBurst=5
sudo systemctl daemon-reload
sudo systemctl restart php8.2-fpm

Çözüm 6: Bellek Sorunlarını Giderme

# Sistem bellek kullanımı
free -h

# OOM (Out of Memory) killer logları
sudo dmesg | grep -i "oom\|kill"

# PHP-FPM bellek kullanımı
ps aux | grep php-fpm | awk '{sum += $6} END {print sum/1024 " MB"}'

Eğer OOM killer PHP-FPM'i öldürüyorsa sunucuya daha fazla RAM eklemeli veya Swap alanı oluşturmalısınız.

PHP-FPM Durum Sayfası

PHP-FPM'in kendi durum sayfasını aktifleştirerek gerçek zamanlı izleme yapabilirsiniz:

; www.conf dosyasında
pm.status_path = /status
ping.path = /ping
; Nginx yapılandırmasında
location ~ ^/(status|ping)$ {
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    allow 127.0.0.1;
    deny all;
}
curl http://localhost/status

Önleyici Tedbirler

  • PHP-FPM için yeterli pm.max_children değeri belirleyin
  • Sunucu monitoring aracı kurun (Netdata, Prometheus)
  • Slow log aktifleştirip yavaş PHP betiklerini optimize edin
  • PHP-FPM durum sayfasını Nagios/Zabbix ile izleyin
  • Systemd Restart=always ile otomatik kurtarma sağlayın

Özet

PHP 502 Bad Gateway hatası çoğunlukla PHP-FPM servisinin durmasından kaynaklanır. İlk adım systemctl restart php8.2-fpm ile servisi yeniden başlatmaktır. Sorun tekrarlanıyorsa socket izinlerini, pm.max_children değerini ve sunucu kaynaklarını kontrol edin. Systemd Restart direktifi ile PHP-FPM çöktüğünde otomatik yeniden başlamasını sağlayın.

🤔 Bu kurulumda sorun mu yaşıyorsunuz?

Hata mesajınızı kopyalayıp foruma konu açın. Topluluğumuz size özel durumunuza göre yardımcı olacaktır.

🗨️ Foruma Katıl & Yardım Al

Yorumlar

Henüz yorum yok. İlk yorumu siz yapın!

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanır.