PHP 7.4.3’ten PHP 8.x’e Komut Satırıyla Geçiş
PHP 7.4.3, kapsamlı projelerde hem hız hem de güvenlik bakımından artık yeterli düzeyde değil. Bu sürüme destek sona erdiği için güvenlik açıkları oluşabiliyor. PHP 8.x ise daha modern, daha performanslı ve aktif olarak güncellenmeye devam eden bir seçenek sunuyor.
Geçişi sağlamak için terminalde birkaç komut çalıştırmak ve gerekli paketleri eklemek yeterlidir.
Sistem Gereksinimleri
İlk adım olarak dosya yapısını ve veritabanını yedekleyelim. Ardından sistemde aktif olan PHP uzantılarını görmek için şu komutu çalıştıralım:
php -mBu liste, PHP 8.x’e geçtikten sonra yeniden kurmamız gereken modülleri belirlememize yardımcı olur. Ek olarak, işlem öncesi log kayıtlarını incelemek fayda sağlar.
Veritabanını da güncellemek isteyen geliştiriciler, özellikle SQLite kullanan projelerde geçiş adımlarını kontrollü biçimde uygulamalıdır.nlamak için SQLite Veritabanından MySQL’e Nasıl Geçilir başlıklı rehberimize de göz atabilir.
Ubuntu ve Debian Tabanlı Sunucularda PHP 8.x’e Geçiş Hazırlığı
Ubuntu 20.04 ve Debian sistemlerde PHP güncellemesi için en sık kullanılan yöntem bu rehberdeki adımlardır. Başlamadan önce mevcut PHP sürümünü doğrulayalım. Eğer terminalde 7.4.3 görünüyorsa ilerleyebiliriz.
php -vArdından PHP 8.x paketlerini içeren repoyu ekleyelim. Ubuntu kullanıcıları için en güncel paketlere Ondřej’in PPA deposu üzerinden ulaşılır, bu nedenle kuruluma bu depoyu tanımlayarak devam edelim.
sudo apt update<br>sudo apt install -y software-properties-common<br>sudo add-apt-repository ppa:ondrej/php<br>sudo apt updatePHP 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 \<br>php8.2 php8.2-cli php8.2-common php8.2-fpm \<br>php8.2-mysql php8.2-xml php8.2-gd php8.2-curl \<br>php8.2-mbstring php8.2-zip php8.2-intlsudo update-alternatives --config phpPHP 8.x Sonrası Web Sunucu Ayarlarını Güncelleme
PHP yükseltmesi sonrası Apache veya Nginx’in hâlâ eski sürümü kullanmaması için yapılandırma değişiklikleri yapılmalıdır.
Apache kullanılıyorsa:
Eski PHP modülünü devre dışı bırakıp yeni modülü aktifleştirelim ve Apache’yi yeniden başlatalım.
sudo a2dismod php7.4<br>sudo a2enmod php8.2<br>sudo systemctl restart apache2Nginx + FPM kullanılıyorsa:
Nginx konfigürasyonunda genelde aşağıdaki satır yer alı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 nginxPHP 7.4 ve PHP 8.x İçin Konfigürasyon Yollarını Karşılaştıralım
PHP 7.4’ten PHP 8.x’e geçerken yapılandırma klasörleri değiştiği için bazı ayarların manuel olarak düzeltilmesi gerekir. Bu nedenle her iki sürümün php.ini dizinlerini kontrol edelim.
PHP 7.4 php.ini dizinleri:
/etc/php/7.4/cli/php.ini
/etc/php/7.4/fpm/php.iniPHP 8.2 php.ini dizinleri:
/etc/php/8.2/cli/php.ini
/etc/php/8.2/fpm/php.iniGeçiş sonrasında özellikle memory_limit gibi ayarların yeni sürüme uygun biçimde düzenlendiğinden 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 -yDepolar 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 -ySon 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-curlKurulumdan 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 httpdSı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.3PPA’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.