PHP 7.4’ü Terminal Üzerinden PHP 8.x’e Yükseltme

Uygulamalar büyüdükçe PHP 7.4.3 performans ve güvenlik açısından eksik kalmaya başlıyor. Bu sürümün güncellemeleri sona erdiği için güvenlik riskleri artarken, PHP 8.x hem hız hem de stabilite açısından daha güçlü ve güvenilir bir yapı sunuyor.

Basit birkaç terminal adımıyla gerekli paketleri kurarak geçişi kolaylıkla gerçekleştirebiliriz.

Yükseltme Öncesi Sistem Gereksinimleri

Öncelikle dosya yapısını ve veritabanını yedekleyerek işe başlayalım. Daha sonra PHP’nin hangi uzantıları kullandığını hızlıca kontrol edelim.

php -m

Bu komut, PHP 8.x tarafında yeniden yüklememiz gereken modülleri gösterir. Devam etmeden önce log dosyalarını incelemek de yararlı olacaktır.

PHP yükseltmesi sırasında veritabanını da güncellemeyi planlayanlar, özellikle SQLite kullanan projelerde geçiş sürecini dikkatli yönetmelidir.

Ubuntu ve Debian Üzerinde PHP 8.x Paketlerini Hazırlama

Bu işlem adımları, Ubuntu 20.04 ve Debian tabanlı tüm dağıtımlarda en yaygın kullanılan yöntemdir. Önce mevcut PHP sürümünü kontrol edelim. Terminalde PHP 7.4.3 görünüyorsa yükseltmeye devam edebiliriz.

php -v

PHP 8.x sürümlerinin yer aldığı depoyu ekleyelim. Ubuntu tarafında en güncel paketleri Ondřej’in PPA deposu sağlar ve kuruluma bu depoyu ekleyerek başlayabiliriz.

sudo apt update<br>sudo apt install -y software-properties-common<br>sudo add-apt-repository ppa:ondrej/php<br>sudo apt update

PHP 8.2’yi gerekli modüllerle kuralım

Aşağıdaki komutu eklediğimizde en sık kullanılan eklentilerle birlikte PHP 8.2 kurulmuş olur. Buradaki 8.2 sürümünü 8.1 veya 8.3 ile değiştirebiliriz.

sudo apt install -y \
php8.2 php8.2-cli php8.2-common php8.2-fpm \
php8.2-mysql php8.2-xml php8.2-gd php8.2-curl \
>php8.2-mbstring php8.2-zip php8.2-intl
sudo update-alternatives --config php

Apache veya Nginx Üzerinde PHP 8.x’i Etkinleştirme

Sisteme PHP 8.x kurmak yeterli değildir, web sunucusunun da bu sürümü kullanacak şekilde yapılandırılması gerekir.

Apache kullanılıyorsa:

Önce eski PHP modülünü kapatalım, ardından PHP 8.2 modülünü aktif ederek servisi yeniden başlatalım.

sudo a2dismod php7.4
sudo a2enmod php8.2
sudo systemctl restart apache2

Nginx + PHP-FPM kullanılıyorsa:

Nginx’in site yapılandırmasında genellikle şu satır bulunur:

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

Bu satırı PHP 8.2 için şu şekilde güncelleyelim

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

Son olarak servisleri yeniden başlatalım

sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx

PHP.ini Dosyalarının Yeni Konumlarını Doğrulayalım

Sürüm yükseltmesi yapıldığında PHP 7.4 ve PHP 8.x’in kullandığı php.ini dizinleri değiştiği için bazı ayarların yeniden düzenlenmesi gerekir. Bu yüzden dosya yollarını kontrol edelim.

PHP 7.4 php.ini yolları:

/etc/php/7.4/cli/php.ini<br>/etc/php/7.4/fpm/php.ini

PHP 8.2 php.ini yolları:

/etc/php/8.2/cli/php.ini<br>/etc/php/8.2/fpm/php.ini

RHEL, CentOS, AlmaLinux ve Rocky Linux İçin PHP 8.x Kurulumu

Bu dağıtımlarda PHP’nin en güncel sürümleri Remi deposu üzerinden geliyor. İşleme önce eski PHP paketlerini kaldırarak başlayabiliriz.

sudo dnf remove php*

Ardından Remi deposunun kullanılabilmesi için EPEL ve Remi paketlerini ekleyelim.

sudo dnf install epel-release -y<br>sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y

Depolar hazır olduğunda PHP modülünü PHP 8.2 sürümüne yönlendirebiliriz

sudo dnf module reset php -y<br>sudo dnf module enable php:remi-8.2 -y

Son aşamada PHP 8.2 ve gerekli eklentileri kurduğumuzda işlem tamamlanmış oluruz

sudo dnf install -y php php-cli php-fpm php-mysqlnd php-xml php-gd php-mbstring php-intl php-zip php-curl

Kurulumdan sonra PHP-FPM ve web sunucusunu yeniden başlatarak yeni sürümü aktif hâle getirebiliriz.

sudo systemctl restart php-fpm<br>sudo systemctl restart httpd

Sık Sorulan Sorular

Ubuntu 20.04’te sudo apt install php8.3-fpm yazdım ama paket bulunamadı?

Bu paket ubuntu’nun varsayılan depoalarında yer almadığı için üçüncü taraf bir depo eklenmeli. Verdiğim terminal kodu ile bu yüklemeyi gerçekleştirelim ve kontrol sağlayalım.

sudo add-apt-repository ppa:ondrej/php<br>sudo apt-get update<br>sudo apt-get install php8.3

PPA’yı ekledim ama yine 8.3 göremiyorum?

PPA eklendikten sonra paket listesi güncellenmeli. Ardından hangi PHP sürümlerinin listelendiğini görmek için apt-cache search php8 gibi bir komut çalıştırabilirsiniz.

Yükseltme sırasında veritabanı veya site içeriğini korumak için ne yapmalıyım?

Önce sistemin tam yedeklemesini mutalaka almalıyız. Eğer vps kullanılıyorsa snapshot almak da önemli. Böylece olası bir sorunda geri dönmek kolay olabilir.

Yorum yapın