Projeler genişledikçe PHP 7.4.3’ün bazı alanlarda yetersiz kaldığı görülüyor ve bu sürüm artık güvenlik tarafında da gerekli korumayı sunmuyor. Bu yüzden PHP 8.x; daha hızlı, daha kararlı ve güncel güvenlik yamalarını almaya devam ettiği için çok daha güvenli bir tercih hâline geliyor.
Terminal üzerinden uygulanacak birkaç komut ve gerekli paketlerin yüklenmesiyle yükseltme işlemini kısa sürede tamamlayabiliriz.
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.
Debian ve Ubuntu Ortamında PHP 8.x Depo Hazırlığı
Ubuntu 20.04 ile Debian tabanlı sistemlerde PHP yükseltme işlemi genellikle aynı adımları takip eder. Öncelikle kurulu PHP sürümünü kontrol edelim. Terminal çıktısı PHP 7.4.3 ise kuruluma geçebiliriz.
php -vSonrasında PHP 8.x için gerekli olan repoyu ekleyelim. Ubuntu için en güncel PHP paketleri Ondřej tarafından sağlanan PPA deposunda bulunduğu için ilk adım olarak bu depoyu sisteme ekleyelim.tleri Ondřej’in PPA deposunda yer alıyor. Bu depoyu sisteme 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 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 phpWeb Sunucusunu PHP 8.x’e Uygun Hale Getirme
PHP 8.x kurulsa bile, Apache veya Nginx’in yeni sürümü kullanması için ek yapılandırma yapılmalıdır.
Apache için:
İlk olarak PHP 7.4 modülünü devre dışı bırakalım, PHP 8.2 modülünü aktif edip Apache’yi yeniden başlatalım.
sudo a2dismod php7.4
sudo a2enmod php8.2
sudo systemctl restart apacheNginx + PHP-FPM için:
Nginx yapılandırmasındaki fastcgi_pass satırı genellikle şu şekildedir:
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 Sürüm Geçişinde php.ini Konumlarını Kontrol Edelim
PHP 7.4’ten 8.x’e yükseltme yapıldığında yapılandırma dosyalarının bulunduğu klasörler değiştiğinden, ayarların yeniden düzenlenmesi gerekebilir. Bu yüzden önce ilgili dizinleri inceleyelim.
7.4 sürümüne ait php.ini konumları:
/etc/php/7.4/cli/php.ini
/etc/php/7.4/fpm/php.ini8.2 sürümündeki konumlar:
/etc/php/8.2/cli/php.ini
/etc/php/8.2/fpm/php.iniPHP 8.x’e yükseltme sonrası memory_limit gibi yapılandırmaların yeni sürümle uyumlu olduğundan emin olmak önemlidir. 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<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
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.