Projeler büyüdükçe PHP 7.4.3 bazı noktalarda yetersiz kalmaya başlıyor ve php güvenlik tarafı da bu sürümde artık yeterli korumayı sağlayamıyor. Bu nedenle PHP 8.x daha stabil, daha hızlı ve php güvenlik güncellemelerini almaya devam ettiği için çok daha güvenli bir seçenek hâline geliyor.
Terminalde yapılacak basit bir güncelleme ve gerekli paketlerin eklenmesiyle geçişi kısa sürede tamamlayabiliriz.
Yükseltme Öncesi Sistem Gereksinimleri
Öncelikle dosya ve veritabanı yedeğini alarak başlayabiliriz. Ardından PHP’nin hangi uzantıları kullandığını hızlıca kontrol edelim.
php -mBu liste, 8.x tarafında hangi modülleri yeniden kurmamız gerektiğini gösteriyor. Son olarak log dosyalarına göz atmak da faydalı olur.
PHP sürümünü yükseltirken veritabanı tarafını da güncellemek isteyenler, özellikle SQLite kullanan projelerde, geçişi daha sağlıklı planlamak için SQLite Veritabanından MySQL’e Nasıl Geçilir başlıklı rehberimize de göz atabilir.
Ubuntu ve Debian Sistemlerde PHP 8.x Kurulumu
Bu adımlar özellikle Ubuntu 20.04 ve Debian tabanlı sistemlerde en çok kullanılan yöntemdir. Sistemde mevcut PHP sürümüne bakalım. Eğer terminal sonrası kontrolde PHP 7.4.3 görüyorsak devam edebiliriz.
php -vPHP 8.x paketlerinin bulunduğu repoyu ekleyelim.
Ubuntu’da en güncel PHP paketleri Ondřej’in PPA deposunda yer alıyor. Bu depoyu sisteme ekleyerek başlayabiliriz.
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php
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 \
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-intlsudo update-alternatives --config phpApache veya Nginx Üzerinde PHP 8.x’e Geçiş
PHP’nin kurulması tek başına yeterli değil. Web sunucumuzun da yeni sürümü kullanmalıyız.
Eğer Apache kullanıyorsak
Önce eski PHP modülünü devre dışı bırakıp yeni modülü aktif hâle getirebiliriz.
sudo a2dismod php7.4<br>sudo a2enmod php8.2<br>sudo systemctl restart apache2Eğer Nginx + PHP-FPM kullanıyorsak
Nginx yapılandırmalarında genellikle aşağıdaki gibi bir 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<br>sudo systemctl restart nginxphp.ini Ayarlarını Kontrol Edelim
PHP 7.4 ve 8.x sürümlerinin yapılandırma dizinleri farklı olduğu için bazı ayarların yeniden düzenlenmesi gerekebiliyor bunları kontrol edelim.
7.4 sürümündeki php.ini yolları
/etc/php/7.4/cli/php.ini<br>/etc/php/7.4/fpm/php.ini8.2 sürümündeki yollar
/etc/php/8.2/cli/php.ini
/etc/php/8.2/fpm/php.ini>>> PHP 8.x’e geçtikten sonra özellikle memory_limit, upload_max_filesize, post_max_size, max_execution_time ve date.timezone gibi temel ayarları kontrol etmek yeterli olur.
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
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
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
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
sudo apt-get update
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.
