Komutları üretim sunucusunda çalıştırmadan önce yedek alın ve mümkünse bir test ortamında deneyin. Yönetim erişiminizi (SSH, panel) kaybetmemek için ayar değişikliklerinde açık bir ikinci oturum bulundurun.
Bu rehberde ne yapacağız?
Desteği sona ermiş bir PHP sürümü güvenlik yaması almaz ve siteniz için ciddi risk oluşturur. Bu rehberde PHP sürümünü güncelleme sürecini uyumluluk kontrolü, test ve geri alma planıyla birlikte güvenle uygulayacaksınız.
Rehber, kendi sunucusunu yöneten hosting ve site yöneticilerine yöneliktir. Tahmini süre 45-90 dakikadır. Sürüm numaraları sürekli değiştiği için burada X.Y yer tutucusu kullanılmıştır; hedef sürümü PHP’nin resmi desteklenen sürümler sayfasından seçin.
Gereksinimler
- Debian/Ubuntu veya AlmaLinux/Rocky tabanlı sunucu ve sudo yetkisi
- Sitenin dosya ve veritabanı yedeği
- Mümkünse test (staging) ortamı
- Kullandığınız uygulamanın (WordPress, Laravel vb.) hedef PHP sürümünü desteklediğini doğrulamak
- Kontrol paneli kullanıyorsanız, sürüm seçimi panelden yapılabilir; bu durumda panelin belgesini izleyin
Adım adım PHP sürümünü güncelleme
1. Mevcut durumu belirleyin
Çalışan sürümü ve yüklü uzantıları kaydedin; yeni sürümde aynı uzantıların bulunması gerekir.
php -v
php -m | sort > ~/php-uzantilar-eski.txt
php --ini2. Uyumluluğu kontrol edin
Uygulamanızın ve eklentilerinin hedef sürümü desteklediğini üreticilerin belgelerinden doğrulayın. Eski eklentiler genellikle ilk kırılan parçadır. Kendi yazdığınız kodda kullanımdan kaldırılan (deprecated) işlevleri günlüklerden tespit edebilirsiniz.
3. Yeni PHP sürümünü yan yana kurun
Eski sürümü kaldırmadan yeni sürümü kurun. Debian/Ubuntu için paketler dağıtım depolarında ya da yaygın olarak kullanılan üçüncü taraf bir PHP deposunda bulunur; depo ekleme adımı için o deponun resmi belgesine bakın. Paket adlarında X.Y yerine hedef sürümü yazın.
# Debian/Ubuntu (PHP-FPM ve yaygın uzantılar)
sudo apt update
sudo apt install phpX.Y-fpm phpX.Y-mysql phpX.Y-curl phpX.Y-mbstring phpX.Y-xml phpX.Y-zip phpX.Y-gdRHEL tabanlı 8 ve 9 sürümlerinde modül akışı yöntemi yaygındır; önce mevcut akışları listeleyin, sonra hedefi seçin. Dikkat: akış değiştirmek sistemdeki tek PHP sürümünün yerine geçer, yan yana kurulum sağlamaz. İki sürümü birlikte çalıştırmanız gerekiyorsa paralel kurulum destekleyen üçüncü taraf bir depo kullanın ve o deponun belgesini izleyin.
# AlmaLinux/Rocky 8/9
sudo dnf module list php
sudo dnf module reset php
sudo dnf module enable php:AKIS_ADI
# PHP zaten kuruluysa paketleri yeni akışa geçirin
sudo dnf distro-sync 'php*'
# İlk kurulumsa
sudo dnf install php php-fpm php-mysqlnd php-mbstring php-xml php-gd4. Yapılandırmayı taşıyın
php.ini ve havuz (pool) ayarlarını eski sürümden yeni sürüme taşıyın. Önemli değerler bellek sınırı, yükleme boyutu ve zaman aşımıdır. Dosyaları kopyalamak yerine farkları karşılaştırıp gerekenleri aktarmak daha güvenlidir.
# Debian/Ubuntu
sudo nano /etc/php/X.Y/fpm/php.ini
sudo nano /etc/php/X.Y/fpm/pool.d/www.conf
# AlmaLinux/Rocky
sudo nano /etc/php.ini
sudo nano /etc/php-fpm.d/www.confmemory_limit = 256M
upload_max_filesize = 32M
post_max_size = 32M
max_execution_time = 60
expose_php = Off5. Web sunucusunu yeni PHP-FPM soketine yönlendirin
Nginx veya Apache yapılandırmasında PHP-FPM soket yolunu yeni sürüme çevirin. Önce yapılandırmayı sınayın, sonra yeniden yükleyin. Önce tek bir test sitesinde deneyin.
# Nginx (Debian/Ubuntu): fastcgi_pass unix:/run/php/phpX.Y-fpm.sock;
sudo nginx -t && sudo systemctl reload nginx
# Apache (Debian/Ubuntu, proxy_fcgi ile)
sudo a2disconf phpA.B-fpm
sudo a2enconf phpX.Y-fpm
sudo apachectl configtest && sudo systemctl reload apache2Yukarıda A.B eski, X.Y yeni sürümdür. RHEL tabanlı sistemlerde Apache servis adı httpd’dir; PHP-FPM servisi php-fpm adıyla çalışır ve soket genellikle /run/php-fpm/www.sock yolundadır.
6. Test edin ve hata günlüklerini izleyin
Siteyi ziyaret edin, yönetici paneline girin, form gönderimi, ödeme ve zamanlanmış görevler gibi kritik akışları deneyin. Hata günlüklerini canlı izleyin.
# Debian/Ubuntu
sudo tail -f /var/log/phpX.Y-fpm.log
# AlmaLinux/Rocky
sudo tail -f /var/log/php-fpm/error.log7. Geri alma planını hazır tutun
Yan yana kurulumda sorun çıkarsa web sunucusu yapılandırmasını eski soket yoluna çevirerek hızla geri dönebilirsiniz; RHEL modül akışıyla geçiş yaptıysanız geri dönüş eski akışı yeniden etkinleştirip paketleri geri almayı gerektirir, bu yüzden snapshot alın. Eski sürümü birkaç gün kaldırmayın. Sorunsuz çalıştığını doğruladıktan sonra kullanılmayan eski sürümü kaldırın.
Doğrulama
Sürümün gerçekten yeni olduğunu doğrulayın. Komut satırı sürümü web sürümünden farklı olabilir; bu yüzden geçici bir bilgi sayfası kullanıp işlem sonrası silin.
php -v
# Debian/Ubuntu
sudo systemctl status phpX.Y-fpm
# AlmaLinux/Rocky
sudo systemctl status php-fpm
# Web tarafındaki sürüm (test sonrası dosyayı silin)
echo '<?php echo PHP_VERSION;' | sudo tee /var/www/siteniz/surum-test.php
curl -s https://siteniz.example/surum-test.php
sudo rm /var/www/siteniz/surum-test.phpBeklenen sonuç: servisin active (running) durumda olması, sitenin sorunsuz yüklenmesi ve günlüklerde kritik hata bulunmamasıdır. Test için kullandığınız bilgi sayfasını mutlaka sunucudan silin.
Sık karşılaşılan sorunlar
- Beyaz sayfa veya 500 hatası: PHP hata günlüğüne bakın; genellikle eksik uzantı ya da uyumsuz eklenti kaynaklıdır.
- Komut satırında eski sürüm görünüyor: Alternatifler sistemini kontrol edin ya da ilgili sürümün tam yolunu kullanın.
- Web sunucusu eski PHP’yi kullanmaya devam ediyor: Soket yolunu ve servis yeniden yüklemesini kontrol edin.
- Deprecated uyarıları günlüğü dolduruyor: Uyarıları kodda düzeltin; üretimde geçici olarak hata düzeyini düşürmek sorunu çözmez, yalnızca gizler.
Güvenlik ve bakım notları
- Desteklenen sürüm takvimini takip edin ve bir sonraki geçişi önceden planlayın.
- Üretimde display_errors kapalı, log_errors açık olmalıdır.
- Kullanılmayan PHP sürümlerini ve uzantılarını kaldırarak saldırı yüzeyini küçültün.
- Güncellemeyi trafiğin düşük olduğu saatte yapın.
- Geçiş sonrası birkaç gün günlükleri izleyin.
- Uygulama ve eklentileri de PHP ile birlikte güncel tutun.
Sık sorulan sorular
Eski PHP sürümünde kalmak ne kadar riskli?
Desteği biten sürümler yeni bulunan güvenlik açıkları için yama almaz. Bu, saldırganların bilinen açıkları kullanabilmesi anlamına gelir; bu yüzden desteklenen bir sürüme geçmeniz önerilir.
Her siteyi aynı anda mı güncellemeliyim?
Hayır. PHP-FPM havuzlarıyla sürüm bazında geçiş yapıp önce düşük riskli siteleri taşımak güvenlidir. Kritik siteleri test sonrası taşıyın.
Güncellemeden sonra site bozulursa ne yapmalıyım?
Web sunucusunu eski PHP-FPM soketine geri çevirin; böylece site hemen eski haline döner. Ardından günlükleri inceleyip uyumsuzluğu giderin.
İlgili sözlük terimleri
Bu kategorideki diğer rehberler
- MariaDB yavaş sorgu günlüğü ve temel optimizasyonMariaDB yavaş sorgu günlüğünü açın, yavaş sorguları dumpslow ile analiz edin, EXPLAIN ile indeks eksiklerini bulun ve temel optimizasyonla veritabanı yükünü güvenle azaltın.
- CDN veya ters vekil arkasında gerçek istemci IP adresini alma (Nginx ve Apache)CDN veya ters vekil arkasında Nginx ve Apache günlüklerinde, PHP ve güvenlik araçlarında gerçek istemci IP adresini görmek için realip ve remoteip modüllerini güvenli biçimde yapılandırın.
- OPcache, gzip/brotli ve önbellek başlıklarıyla web performansıOPcache ile PHP başlangıç maliyetini düşürün, gzip ve brotli sıkıştırmasını Nginx ile Apache üzerinde açın ve doğru Cache-Control başlıklarıyla web performansını ölçülebilir biçimde artırın.
- php.ini güvenlik ayarlarıphp.ini güvenlik ayarlarını uygulayın: expose_php, disable_functions, open_basedir, hata gösterimi, oturum çerezleri ve dosya yükleme limitlerini PHP-FPM üzerinde güvenle sıkılaştırın.