Veritabanı Sistemleri

CLI Kullanarak PHP 7.4’ten PHP 8.x’e Güncelleme

Proje karmaşıklığı arttıkça PHP 7.4.3 performans sorunları ve güvenlik eksikleriyle kendini belli ediyor. Destek almaya devam eden PHP 8.x ise çok daha hızlı, stabil ve güvenlik açısından güçlü bir sürüm olarak öne çıkıyor.

Terminal üzerinden yapılacak temel güncelleme adımlarıyla bu yükseltme işlemi oldukça hızlı bir şekilde tamamlanabilir.

Yükseltme İçin Gereksinimler

Yükseltme işlemine başlamadan önce dosyaların ve veritabanının bir yedeğini alalım. Daha sonra PHP’nin aktif modüllerini görüntülemek için komutu çalıştıralım:

php -m

Bu çıktıda yer alan uzantılar, PHP 8.x kurulumunda yeniden kurulması gerekenleri gösterir. Hazırlık aşamasında log dosyalarını incelemek de önemli bilgiler sağlar.

Veritabanı tarafında değişiklik yapacak olanlar, özellikle SQLite kullanılan sistemlerde dikkatli bir geçiş planı uygulamalıdır.

PHP 8.x Geçişi İçin Ubuntu ve Debian Repo Belirleme

Bu yöntem, Ubuntu 20.04 ve Debian tabanlı dağıtımlarda PHP yükseltmek için en pratik çözümdür. İlk olarak sistemdeki PHP sürümünü kontrol edelim. Çıktıda PHP 7.4.3 görünüyorsa yükseltme işlemine geçebiliriz.

php -v

PHP 8.x paketlerinin yer aldığı depoyu eklememiz gerekiyor. Ubuntu tarafında Ondřej’in PPA deposu en güncel paketleri sağlar, bu nedenle repo ekleyerek işlemi başlatabiliriz.

sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php
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 / Nginx Yapılandırmalarını PHP 8.x’e Taşımak

PHP 8.x kurulumu tamamlandıktan sonra web sunucumuzun da yeni sürüme geçmesi gerekir.

Apache için:

PHP 7.4 modülünü kapatalım, PHP 8.2 modülünü etkinleştirelim ve servisi yeniden başlatalım.

sudo a2dismod php7.4<br>sudo a2enmod php8.2<br>sudo systemctl restart apache2

Nginx + FPM için:

Site yapılandırmalarında eski PHP-FPM soketi genelde şöyle görünür:

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<br>sudo systemctl restart nginx

PHP.ini Dosyalarını Yeniden Düzenleyelim

PHP 7.4 ile PHP 8.x’in yapılandırma dizinleri farklı olduğu için bazı php.ini ayarlarının yeniden gözden geçirilmesi gerekir. Bu nedenle önce mevcut dizinleri kontrol edelim.

7.4 sürümünde kullanılan php.ini yolları:

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

8.2 sürümünde yer alan dizinler:

/etc/php/8.2/cli/php.ini
/etc/php/8.2/fpm/php.in

PHP 8.x’e geçiş yaptıktan sonra özellikle memory_limit gibi kritik ayarların doğru şekilde taşındığından emin olalım.

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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir