SunucuKontrol — Sunucu Yönetim Paneli
Rehber

PHP sürümü nasıl güncellenir? Ubuntu ve Debian'da adım adım

Yayın:

Kısaca
Kimin için?
Kendi sunucusunu (VPS) yöneten ve komut satırına erişimi olanlar.
Ne öğreneceksiniz?
PHP sürümünüzü görmeyi, güvenlik yamasını kurmayı ve yamanın gerçekten devreye girdiğini doğrulamayı.
Ne kadar sürer?
Güvenlik güncellemesi birkaç dakika. Yeni bir PHP sürümüne geçmek için ayrıca deneme yapmanız gerekir.

PHP'deki güvenlik açıkları ara sürümlerle kapatılır: 8.4.26'dan 8.4.27'ye geçmek gibi. 21 Ekim 2026'da duyurulan php2shell açığı bunun en güncel örneği. Bu rehber, Ubuntu ve Debian'da PHP'yi güvenle güncellemenin bütün adımlarını anlatıyor.

Ara sürüm mü, dal yükseltmesi mi?

1. Kurulu PHP sürümlerini görün

Bir sunucuda birden fazla PHP dalı yan yana kurulu olabilir. Hepsini görmek için:

for v in /usr/bin/php[0-9]*; do $v -v | head -1; done
# Paketlerin kurulu ve depodaki en yeni sürümü:
apt-cache policy php8.4-fpm php8.5-fpm

Installed satırı kurulu sürümü, Candidate satırı depodaki en yeni sürümü gösterir. İkisi farklıysa güncelleme bekliyor demektir.

2. Ara sürümü kurun

Yalnız PHP paketlerini güncellemek, sistemdeki diğer paketlere dokunmamak için. Komut yalnız kurulu paketleri seçer (kurulu olmayan ya da sanal bir ad listeye girerse apt bütün işlemi iptal eder) ve Apache mod_php paketini (libapache2-mod-php8.x) de kapsar:

sudo apt-get update
sudo apt-get install --only-upgrade $(dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package}\n' 'php8.*' 'libapache2-mod-php8.*' 2>/dev/null | awk '$1=="ii"{print $2}')

3. PHP işçilerini yeniden başlatın

Paket güncellense de çalışan PHP-FPM işçileri belleğe yüklü eski kodu kullanmaya devam eder. Yama ancak yeniden başlatmadan sonra etkin olur.

sudo systemctl restart 'php*-fpm.service'
# SunucuKontrol panelinin kendi PHP havuzu:
sudo systemctl restart sunucukontrol-panel-fpm
# Apache mod_php kullanıyorsanız:
sudo systemctl restart apache2

4. Doğrulayın

php-fpm8.4 -v
php-fpm8.5 -v
systemctl status 'php*-fpm.service' --no-pager | grep -E 'Active|php-fpm'
# Apache mod_php kullanıyorsanız paket sürümü:
dpkg-query -W -f='${binary:Package} ${Version}\n' 'libapache2-mod-php8.*' 2>/dev/null

Sürüm numarası yeni olmalı ve havuzların başlangıç saati güncellemeden sonraya düşmeli.

Yeni bir PHP dalına geçiş

  1. Yeni dalı ve sitenin kullandığı eklentileri kurun:
    sudo apt-get install php8.5-fpm php8.5-mysql php8.5-curl php8.5-mbstring \
      php8.5-xml php8.5-zip php8.5-gd php8.5-intl
  2. Eski daldaki ayarlarınızı (/etc/php/<sürüm>/fpm/) yeni dala taşıyın.
  3. Siteyi önce bir hazırlık (staging) kopyasında yeni dalla açın, hata kaydını izleyin.
  4. Sorun yoksa canlı sitenin havuzunu yeni dala geçirin; eski dalı bir süre kaldırmayın.

SunucuKontrol'de bu iş tek ekranda: Alan adları ekranında her sitenin PHP sürümü ayrı seçilir, hazırlık ortamı da panelden açılır. Siteler birbirinden bağımsız olduğu için bir sitenin dal değiştirmesi diğerlerini etkilemez.

Güvenlik güncellemelerini kendiliğinden kurmak

Ubuntu ve Debian'daki unattended-upgrades varsayılan olarak yalnız dağıtımın kendi güvenlik deposunu izler. PHP'yi ondrej/sury deposundan kurduysanız PHP yamaları kendiliğinden gelmez. SunucuKontrol 1.53.1 ve üstü bunu PHP'si ondrej/php deposundan kurulu Ubuntu sunucularda kendiliğinden ayarlar ve PHP güncellendikten sonra panelin PHP süreçlerini yeni sürüme geçirir. Bu, sunucuda unattended-upgrades paketinin kurulu ve açık olmasına bağlıdır; panel paketi kendisi kurmaz ve minimal imajlarda kurulu gelmeyebilir. Kontrol: apt-config dump | grep Unattended-Upgrade çıktısında APT::Periodic::Unattended-Upgrade "1" görünmeli; görünmüyorsa sudo apt-get install unattended-upgrades ve sudo dpkg-reconfigure -plow unattended-upgrades ile açın. Panelin Güvenlik Puanı ekranı da bu durumu uyarı olarak gösterir. Koşul sağlanıyorsa bu bölümü atlayabilirsiniz. SunucuKontrol, Debian'da ve ondrej deposunun olmadığı Ubuntu sürümlerinde (26.04 gibi) PHP'yi dağıtımın kendi paketlerinden kurar; o paketlerin yamaları dağıtımın güvenlik deposundan gelir. PHP'yi kendiniz sury ya da ondrej deposundan kurduysanız elle ayarlamak için önce deponun kaynak adını görün:

apt-cache policy php8.5-fpm | grep -m1 -o 'o=[^,]*'

Çıkan değeri (o= sonrası) /etc/apt/apt.conf.d/52php-otomatik dosyasına ekleyin:

Unattended-Upgrade::Origins-Pattern {
        "origin=<yukarıdaki değer>";
};

Ardından sudo unattended-upgrade --dry-run --debug ile PHP paketlerinin listeye girdiğini görün. Otomatik güncelleme işçileri yeniden başlatmayabilir; 3. adımı bir zamanlanmış göreve bağlamayı unutmayın.

İlgili yazılar