Takip et

CentOS 7 Üzerinde PHP 7’ye Yükseltme: Kapsamlı Bir Rehber

CentOS 7 Üzerinde PHP 7’ye Yükseltme: Kapsamlı Bir Rehber PHP, web geliştirme dünyasının temel taşlarından biridir ve sürekli gelişmektedi

CentOS 7 Üzerinde PHP 7’ye Yükseltme: Kapsamlı Bir Rehber

PHP, web geliştirme dünyasının temel taşlarından biridir ve sürekli gelişmektedir. PHP 7 serisi, önceki sürümlere kıyasla önemli performans iyileştirmeleri, yeni özellikler ve daha iyi bellek yönetimi sunarak web uygulamalarının daha hızlı ve verimli çalışmasını sağlamıştır. CentOS 7 gibi stabil bir sunucu işletim sisteminde eski PHP sürümlerini kullanmak, hem güvenlik açıkları hem de performans darboğazları açısından riskler taşır. Bu makale, CentOS 7 sunucunuzda PHP 7’ye nasıl güvenli ve etkin bir şekilde yükselteceğinizi adım adım açıklayacaktır.

Giriş: Neden PHP 7’ye Yükseltmelisiniz?

PHP 7 serisi (7.0’dan 7.4’e kadar), PHP’nin tarihinde en büyük sıçramalardan birini temsil eder. Bu sürüm, “PHPNG” (Next Generation) projesi kapsamında geliştirilmiş olup, genel olarak PHP 5.x serisine göre iki katına kadar performans artışı sunar. Bu, daha az sunucu kaynağı kullanarak daha fazla isteği işleyebilmeniz anlamına gelir ki bu da özellikle yüksek trafikli web siteleri için kritik bir avantajdır.

Performansın yanı sıra, PHP 7 birçok yeni dil özelliği de getirmiştir:

* Skaler Tip Bildirimleri (Scalar Type Declarations): Fonksiyon parametreleri ve dönüş değerleri için int, float, string, bool gibi tipleri belirtebilme.
* Dönüş Tipi Bildirimleri (Return Type Declarations): Fonksiyonların döndüreceği değerin tipini belirtebilme.
* Null Birleştirme Operatörü (Null Coalescing Operator ??): Bir değişkenin tanımlı olup olmadığını ve null olup olmadığını kontrol etmeyi basitleştirir.
* Uzay Gemisi Operatörü (Spaceship Operator <=> ): İki değeri karşılaştırmak için tek bir operatör.
* Anonim Sınıflar (Anonymous Classes): Tek kullanımlık nesneler oluşturmak için sınıfları doğrudan tanımlayabilme.
* Hata İşleme Geliştirmeleri: Yeni Throwable arayüzü sayesinde daha tutarlı hata ve istisna yönetimi.

Bu yenilikler, daha modern, okunabilir ve bakımı kolay kod yazmanıza olanak tanır. Ayrıca, eski PHP sürümleri artık güvenlik güncellemeleri almadığından, PHP 7’ye geçiş güvenlik açısından da bir zorunluluktur.

Bu yükseltme süreci, sistem yöneticileri ve web geliştiricileri için tasarlanmıştır. Başlamadan önce, herhangi bir yükseltme işleminde olduğu gibi, yedeklemenin hayati önem taşıdığını unutmamak gerekir.

Ön Koşullar ve Planlama

PHP yükseltmesi, özellikle canlı bir sunucuda yapılıyorsa dikkatli planlama gerektirir. Aceleci davranmak, sitenizin veya uygulamalarınızın çalışmamasına neden olabilir.

Sistem Gereksinimleri

* CentOS 7 İşletim Sistemi: Bu rehber CentOS 7 için yazılmıştır.
* Root veya Sudo Yetkileri: Yükseltme işlemleri için sistem genelinde değişiklik yapma yetkisine sahip olmanız gerekir.
* İnternet Bağlantısı: Yeni paketleri indirmek için gereklidir.

Yükseltme Öncesi Kontrol Listesi

1. Tam Yedekleme (Olmazsa Olmaz!):
* Web Sitesi Dosyaları: /var/www/html veya özel web kök dizininizdeki tüm dosyalarınızı yedekleyin.
* Veritabanları: MySQL/MariaDB veya PostgreSQL gibi kullandığınız tüm veritabanlarının yedeğini alın. mysqldump veya pg_dump komutları bu iş için idealdir.
* PHP Yapılandırma Dosyaları: Mevcut php.ini dosyanızın ve diğer PHP yapılandırma dosyalarınızın (örneğin /etc/php-fpm.d/www.conf) bir kopyasını alın.
* Web Sunucusu Yapılandırmaları: Apache (httpd.conf, vhosts) veya Nginx (nginx.conf, sites-enabled) yapılandırma dosyalarınızı yedekleyin.

2. Mevcut PHP Sürümünü Belirleme:
* Sunucunuzda yüklü olan PHP sürümünü kontrol edin:

php -v

* Ayrıca, yüklü PHP modüllerini görmek için:

php -m

3. Uygulama Uyumluluğunu Kontrol Etme:
* Sunucunuzda çalışan tüm PHP tabanlı uygulamaları (WordPress, Joomla, Drupal, Laravel, özel uygulamalar vb.) listeleyin.
Her uygulamanın PHP 7 ile uyumlu olduğundan emin olun. Genellikle, popüler CMS’ler ve framework’ler PHP 7 ile uyumludur, ancak eski veya özel yazılmış uygulamalar uyumluluk sorunları yaşayabilir. Uygulamaların resmi belgelerini kontrol edin veya geliştiricileriyle iletişime geçin. Özellikle PHP 5.x’ten 7.x’e geçişte mysql_ fonksiyonlarının kaldırılması ve katı tip denetimleri gibi önemli değişiklikler eski kodları bozabilir.

4. PHP Uzantıları ve Bağımlılıkları:
* Uygulamalarınızın kullandığı tüm PHP uzantılarını not alın. Yükseltme sonrası bu uzantıların PHP 7 için de kurulması gerekecektir. php -m çıktısını bir yere kaydedin.

5. php.ini Özelleştirmeleri:
* Mevcut php.ini dosyanızda yapılan tüm özel ayarları (örneğin memory_limit, upload_max_filesize, date.timezone vb.) bir kenara not alın. Yükseltme sonrası bu ayarları yeni php.ini dosyasına uygulamanız gerekecek.

6. Yükseltme Yöntemini Belirleme:
* Yerinde Yükseltme (In-place Upgrade): Mevcut PHP paketlerini kaldırıp yerine PHP 7 paketlerini kurmak. Bu, genellikle daha basittir ancak bir sorun çıkması durumunda geri dönüşü daha zor olabilir.
* Paralel Kurulum (Parallel Installation): PHP 7’yi mevcut PHP sürümüne dokunmadan ayrı bir konumda kurup, daha sonra web sunucusunu yeni PHP sürümünü kullanacak şekilde yapılandırmak. Bu yöntem daha güvenli olabilir ancak yapılandırması biraz daha karmaşıktır. Bu rehber yerinde yükseltme yöntemine odaklanacaktır, ancak dikkatli adımlar ve yedeklemelerle güvenli hale getirilecektir.

7. PHP 7 Sürümünü Seçme:
* PHP 7 serisi 7.0, 7.1, 7.2, 7.3 ve 7.4’ten oluşur. Her sürümün kendi yaşam döngüsü vardır. Genellikle, en son kararlı sürümü (bu makalenin yazıldığı dönemde PHP 7.4 son 7.x sürümüydü) seçmek en iyisidir, çünkü daha fazla özellik, performans ve güvenlik güncellemesi sunar. Ancak uygulama uyumluluğu da önemlidir. REMI deposu genellikle tüm bu sürümleri sunar.

Sisteminizi Hazırlama

Yükseltme işlemine başlamadan önce sisteminizin güncel olduğundan ve gerekli depoların etkinleştirildiğinden emin olmalıyız.

Sistemi Güncelleme

Tüm sistem paketlerini en son sürümlerine güncelleyerek olası bağımlılık sorunlarını önleyin:

sudo yum update -y
sudo yum upgrade -y

Bu işlem biraz zaman alabilir. Güncelleme tamamlandıktan sonra, çekirdek güncellemeleri yapıldıysa sunucuyu yeniden başlatmanız önerilir:

sudo reboot

EPEL ve REMI Depolarını Kurma

CentOS’un varsayılan depoları genellikle en son PHP sürümlerini içermez. PHP 7’yi kurmak için üçüncü taraf bir depoya ihtiyacımız var. REMI deposu, CentOS için en güncel ve güvenilir PHP paketlerini sunar. REMI deposu genellikle EPEL (Extra Packages for Enterprise Linux) deposuna bağımlıdır, bu yüzden önce onu kurmalıyız.

1. EPEL deposunu kurun:

sudo yum install epel-release -y

2. REMI deposunu kurun:

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y

Bu depoları kurduktan sonra, yum paket yöneticisi artık PHP’nin farklı sürümlerini ve uzantılarını REMI deposundan listeleyebilir ve yükleyebilir.

Mevcut PHP Kurulumunu Devre Dışı Bırakma/Kaldırma

Bu adım, mevcut PHP sürümünüzün nasıl kurulduğuna bağlı olarak değişebilir. Eğer PHP, CentOS’un varsayılan depolarından kurulduysa, REMI deposundan yeni bir PHP sürümü kurarken çakışmaları önlemek için eski sürümü devre dışı bırakmak veya kaldırmak en iyisidir.

Önemli Uyarı: sudo yum remove php* komutu, PHP ile birlikte bağımlı olan bazı uygulamaları da kaldırabilir. Bu yüzden bu komutu dikkatli kullanın ve öncesinde iyi bir yedeklemeye sahip olduğunuzdan emin olun. Daha güvenli bir yaklaşım, REMI deposunu etkinleştirirken varsayılan PHP modülünü devre dışı bırakmaktır.

CentOS 7’de yum module komutu genellikle CentOS 8’deki kadar yaygın değildir. Ancak, PHP’yi REMI’den kurarken, REMI’nin PHP modülünü etkinleştirmek, diğer PHP modüllerini (varsayılan) otomatik olarak devre dışı bırakabilir.

Önce mevcut PHP modüllerini listeleyelim ve etkin olanları kontrol edelim:

sudo yum module list php

Bu komut, hangi PHP sürümlerinin mevcut olduğunu ve hangisinin etkinleştirildiğini gösterecektir. Örneğin, php:7.2 gibi bir şey görebilirsiniz.

Eğer daha önce PHP’yi doğrudan yum install php ile kurduysanız ve REMI’den yeni bir sürüm etkinleştirecekseniz, genellikle eski sürümlerle çakışma yaşanmaz. Ancak, temiz bir kurulum için eski PHP paketlerini kaldırmak isteyebilirsiniz:

sudo yum remove php php-cli php-fpm php-common -y

Bu komutu çalıştırdıktan sonra, sistemin kaldırmak istediği bağımlılıkları dikkatlice inceleyin. Eğer WordPress gibi uygulamalarınız bu kaldırma işlemiyle birlikte gidecek gibi görünüyorsa, işlemi iptal edip daha dikkatli bir yol izlemelisiniz. Genellikle, REMI’den yeni PHP sürümünü kurarken eski paketler üzerine yazılır veya doğru şekilde yönetilir.

Alternatif olarak, sadece eski PHP yapılandırma dosyalarını temizleyebilirsiniz:

sudo rm -rf /etc/php.d/ /etc/php.ini /etc/php-fpm.d/

Bu komutu da dikkatli kullanın ve öncesinde yedekleme yaptığınızdan emin olun.

PHP 7 Kurulumu

Artık sistemimiz hazır olduğuna göre, PHP 7’yi kurmaya başlayabiliriz.

Belirli Bir PHP 7 Sürümünü Seçme ve Etkinleştirme

REMI deposu, PHP’nin birden fazla sürümünü sunar. Kurmak istediğiniz PHP 7 sürümünü (örneğin PHP 7.4) etkinleştirmelisiniz.

Önce REMI deposunda hangi PHP modüllerinin mevcut olduğunu listeleyelim:

sudo yum module list php

Çıktı şöyle bir şeye benzeyebilir:

remi-7.2 [d]
remi-7.3
remi-7.4

[d] ile işaretli olan, varsayılan olarak etkinleştirilmiş olan modüldür. Eğer başka bir sürüm kurmak istiyorsanız, önce mevcut etkin modülü sıfırlamanız ve ardından istediğiniz sürümü etkinleştirmeniz gerekir.

Örneğin, PHP 7.4’ü kurmak için:
1. PHP modülünü sıfırlayın (varsa):

sudo yum module reset php -y

2. PHP 7.4 modülünü etkinleştirin:

sudo yum module enable php:remi-7.4 -y

Bu komut, php modülünü REMI deposundaki 7.4 sürümüne işaret edecek şekilde ayarlar.

PHP 7 ve Temel Uzantıları Kurma

Modülü etkinleştirdikten sonra, PHP 7’yi ve web uygulamaları için en yaygın kullanılan uzantıları kurabiliriz.

sudo yum install php php-cli php-fpm php-mysqlnd php-gd php-opcache php-xml php-mbstring php-json php-zip -y

Bu komutta kurulan temel uzantılar ve amaçları:
* php: PHP’nin çekirdek paketi.
* php-cli: Komut satırı arayüzü için PHP (örneğin php -v komutu için).
* php-fpm: FastCGI Process Manager; Nginx veya Apache ile PHP uygulamalarını çalıştırmak için gereklidir.
* php-mysqlnd: MySQL/MariaDB veritabanlarına bağlanmak için gerekli yerel sürücü. mysql uzantısının modern ve performanslı alternatifidir.
* php-gd: Görüntü işleme fonksiyonları için (örneğin, resim boyutlandırma, watermark ekleme).
* php-opcache: PHP kodunu önbelleğe alarak performansı artıran bir uzantı. Genellikle şiddetle önerilir.
* php-xml: XML verilerini işlemek için.
* php-mbstring: Çok baytlı dizeleri (multi-byte strings) işlemek için (örneğin, Türkçe karakterler).
* php-json: JSON verilerini işlemek için.
* php-zip: Zip dosyalarını okuma ve yazma yeteneği için.

Ek PHP Uzantıları Kurma

Uygulamalarınızın ihtiyaç duyduğu diğer uzantıları da kurmanız gerekebilir. Önceden kaydettiğiniz php -m çıktısına bakarak eksik uzantıları belirleyin.

Örneğin, php-pear, php-devel, php-intl, php-soap, php-ldap gibi uzantıları kurmak için:

sudo yum install php-pear php-devel php-intl php-soap php-ldap -y

Mevcut tüm PHP uzantılarını aramak için:

sudo yum search php-

Bu komut, REMI deposundaki tüm php- ile başlayan paketleri listeleyecektir. İhtiyacınız olanları bu listeden seçip kurabilirsiniz.

PHP 7’yi Yapılandırma

PHP 7’yi kurduktan sonra, onu web sunucunuzla (Apache veya Nginx) düzgün bir şekilde çalışacak şekilde yapılandırmanız gerekir. Bu genellikle PHP-FPM’yi etkinleştirmeyi ve php.ini ayarlarını düzenlemeyi içerir.

PHP-FPM Yapılandırması

PHP-FPM (FastCGI Process Manager), PHP’yi web sunucusundan ayrı bir işlem olarak çalıştırmanın en yaygın ve performanslı yoludur.

1. PHP-FPM servisini başlatın ve sistem başlangıcında otomatik başlaması için etkinleştirin:

sudo systemctl start php-fpm
    sudo systemctl enable php-fpm

2. PHP-FPM servisinin durumunu kontrol edin:

sudo systemctl status php-fpm

Durum active (running) olarak görünmelidir.

3. PHP-FPM yapılandırma dosyalarını inceleyin:
* Ana yapılandırma dosyası: /etc/php-fpm.conf
* Havuz (pool) yapılandırma dosyaları: /etc/php-fpm.d/www.conf (varsayılan)

www.conf dosyasında dikkat etmeniz gereken bazı önemli ayarlar:
* user ve group: PHP-FPM işlemlerinin hangi kullanıcı ve grup altında çalışacağını belirler. Genellikle Apache için apache, Nginx için nginx olarak ayarlanır.

user = apache
        group = apache

* listen: PHP-FPM’nin web sunucusundan gelen istekleri dinleyeceği adres ve port veya Unix soketidir. Unix soketleri genellikle daha performanslıdır.

listen = /run/php-fpm/www.sock

veya TCP/IP için:

listen = 127.0.0.1:9000

Kullandığınız web sunucusunun yapılandırmasına uygun olanı seçmelisiniz. Varsayılan olarak Unix soketi tercih edilir.

php.ini Ayarları

PHP’nin genel çalışma zamanı ayarları php.ini dosyasında bulunur. PHP-FPM kullanırken, CLI için /etc/php.ini ve FPM için /etc/php-fpm.d/www.conf içinde veya /etc/php.d/*.ini dosyalarında ek ayarlar bulabilirsiniz.

Bazı önemli php.ini ayarları ve önerilen değerler:
* memory_limit: PHP script’lerinin kullanabileceği maksimum bellek miktarı. Uygulamanızın ihtiyaçlarına göre artırın (örneğin, WordPress için 256M veya 512M).

memory_limit = 256M

* upload_max_filesize: HTTP POST yöntemiyle yüklenebilecek maksimum dosya boyutu.
* post_max_size: HTTP POST verilerinin maksimum boyutu. Genellikle upload_max_filesize değerinden büyük veya eşit olmalıdır.

upload_max_filesize = 64M
    post_max_size = 64M

* max_execution_time: Bir script’in çalışmasına izin verilen maksimum süre (saniye cinsinden). Uzun süren işlemler için artırılabilir.

max_execution_time = 300

* date.timezone: Sunucunuzun saat dilimini ayarlayın. Bu ayar, tarih ve saat fonksiyonlarının doğru çalışması için kritik öneme sahiptir.

date.timezone = Europe/Istanbul

Geçerli saat dilimlerinin listesini PHP belgelerinden bulabilirsiniz.
* display_errors: Hataların tarayıcıda gösterilip gösterilmeyeceğini belirler. Geliştirme ortamında On, üretim ortamında Off olmalıdır.

display_errors = Off

* log_errors: Hataların log dosyasına yazılıp yazılmayacağını belirler. Üretim ortamında On olmalıdır.

log_errors = On

* error_log: Hata log dosyasının yolu.

error_log = /var/log/php-fpm/www-error.log

* opcache ayarları: /etc/php.d/10-opcache.ini dosyasında bulunur. Performans için etkinleştirildiğinden emin olun ve opcache.revalidate_freq gibi ayarları optimize edin.

opcache.enable=1
    opcache.memory_consumption=128
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=4000
    opcache.revalidate_freq=60
    opcache.fast_shutdown=1

Bu ayarları değiştirdikten sonra PHP-FPM servisini yeniden başlatmayı unutmayın:

sudo systemctl restart php-fpm

Web Sunucusu Yapılandırması (Apache/Nginx)

Web sunucunuzun, PHP isteklerini yeni PHP-FPM servisine yönlendirmesi için yapılandırılması gerekir.

Apache HTTP Sunucusu İçin

1. mod_php‘yi devre dışı bırakın (eğer kullanılıyorsa):
Eğer daha önce mod_php kullanıyorsanız, PHP-FPM ile çakışmaması için onu devre dışı bırakmalısınız.

sudo yum remove mod_php # veya sudo a2dismod phpX.X

Veya ilgili yapılandırma dosyasından LoadModule phpX_module satırını yorum satırı yapın.

2. mod_proxy_fcgi modülünü etkinleştirin:
Apache’nin PHP-FPM ile FastCGI üzerinden iletişim kurmasını sağlar. Bu modül genellikle varsayılan olarak yüklüdür, ancak etkinleştirilmesi gerekebilir.
/etc/httpd/conf/httpd.conf veya /etc/httpd/conf.d/proxy_fcgi.conf gibi bir dosyada şu satırın olduğundan emin olun:

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

3. Sanal Hostları Yapılandırın:
Web sitenizin sanal host yapılandırma dosyasında (örneğin /etc/httpd/conf.d/vhost.conf), .php uzantılı dosyaların PHP-FPM’e yönlendirilmesini sağlayın.

Unix Soketi Kullanımı (Önerilen):


        ServerName yourdomain.com
        DocumentRoot /var/www/html/yourdomain.com/public

        
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        

        
            SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/"
        

        ErrorLog /var/log/httpd/yourdomain.com_error.log
        CustomLog /var/log/httpd/yourdomain.com_access.log combined
    

TCP/IP Portu Kullanımı (Alternatif):


        SetHandler "proxy:fcgi://127.0.0.1:9000"
    

4. Apache’yi yeniden başlatın:

sudo systemctl restart httpd
Nginx Sunucusu İçin

1. Sanal Hostları Yapılandırın:
Web sitenizin Nginx sanal host yapılandırma dosyasında (örneğin /etc/nginx/conf.d/yourdomain.com.conf), .php uzantılı dosyaların PHP-FPM’e yönlendirilmesini sağlayın.

server {
        listen 80;
        server_name yourdomain.com www.yourdomain.com;
        root /var/www/html/yourdomain.com/public;
        index index.php index.html index.htm;

        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ \.php$ {
            # Unix Soketi Kullanımı (Önerilen)
            fastcgi_pass unix:/run/php-fpm/www.sock;
            # TCP/IP Portu Kullanımı (Alternatif)
            # fastcgi_pass 127.0.0.1:9000;

            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        # WordPress gibi uygulamalar için .htaccess'i taklit etmek üzere
        # location ~ /\.ht {
        #     deny all;
        # }
    }

2. Nginx yapılandırmasını test edin ve yeniden başlatın:

sudo nginx -t
    sudo systemctl restart nginx

Yükseltme Sonrası Doğrulama ve Sorun Giderme

PHP 7’yi kurup yapılandırdıktan sonra, her şeyin düzgün çalıştığından emin olmak için doğrulama yapmanız ve olası sorunları gidermeniz gerekir.

PHP Sürümünü Doğrulama

1. Komut Satırı (CLI) PHP sürümünü kontrol edin:

php -v

Çıktıda PHP 7.x sürümünü görmelisiniz (örneğin PHP 7.4.X).

2. Web Sunucusu PHP sürümünü kontrol edin:
Web sitenizin kök dizininde (örneğin /var/www/html/yourdomain.com/public) info.php adında bir dosya oluşturun ve içine şu kodu yapıştırın:

Tarayıcınızda http://yourdomain.com/info.php adresine gidin. Açılan sayfada PHP 7.x sürüm bilgilerini ve tüm yapılandırma ayarlarını görmelisiniz. Bu sayfayı doğrulama sonrası güvenlik nedeniyle sunucunuzdan kaldırmayı unutmayın.

Uygulamaları Test Etme

Tüm PHP tabanlı uygulamalarınızı (WordPress, Laravel vb.) detaylı bir şekilde test edin.
* Tüm sayfaları ziyaret edin.
* Formları gönderin.
* Giriş/çıkış işlemlerini kontrol edin.
* Veritabanı bağlantılarını test edin.
* Resim yükleme, dosya indirme gibi işlemleri kontrol edin.
* Tüm yönetim panellerini kontrol edin.

Ortak Sorunlar ve Çözümleri

1. Eksik PHP Uzantıları:
* Belirti: Uygulama hataları, beyaz ekran, Call to undefined function hataları.
* Çözüm: Uygulamanızın ihtiyaç duyduğu eksik uzantıları sudo yum install php-uzantı_adı komutuyla kurun ve PHP-FPM’yi yeniden başlatın. info.php sayfasından yüklü uzantıları kontrol edebilirsiniz.

2. PHP 7 Uyumluluk Sorunları:
* Belirti: Uygulama hataları, özellikle eski kodlarda Deprecated veya Fatal error mesajları.
Çözüm: PHP 5.x’ten 7.x’e geçişte kaldırılan veya değiştirilen fonksiyonlar nedeniyle eski kodlar çalışmayabilir. Özellikle mysql_ fonksiyonları PHP 7’de tamamen kaldırılmıştır. Bu tür durumlarda uygulamanızın kodunu PHP 7 ile uyumlu hale getirmeniz veya uygulamanın güncel bir sürümünü kullanmanız gerekir. PHP’nin resmi migration rehberlerini inceleyin.

3. İzin Sorunları:
* Belirti: Uygulamanın dosya yazma/okuma izinleri olmadığında hatalar (örneğin, resim yükleyememe, log yazamama).
* Çözüm: PHP-FPM’nin çalıştığı kullanıcı ve grubun (genellikle apache veya nginx), web kök dizini ve ilgili alt dizinlere (örneğin wp-content/uploads, storage klasörleri) doğru okuma/yazma izinlerine sahip olduğundan emin olun.

sudo chown -R apache:apache /var/www/html/yourdomain.com
        sudo find /var/www/html/yourdomain.com -type d -exec chmod 755 {} \;
        sudo find /var/www/html/yourdomain.com -type f -exec chmod 644 {} \;

WordPress için özel izinler gerekebilir (örneğin, wp-content klasörü için 775 veya 777).

4. SELinux Engellemeleri:
* Belirti: PHP-FPM veya web sunucusu loglarında AVC denied hataları, bağlantı kurulamaması.
* Çözüm: Eğer SELinux etkinse, bazı işlemleri engelleyebilir. audit.log dosyasını kontrol edin (sudo cat /var/log/audit/audit.log | grep AVC). Gerekirse SELinux politikalarını ayarlayın veya geçici olarak devre dışı bırakın (üretim ortamında önerilmez).
Örneğin, Apache’nin ağ bağlantısı kurmasına izin vermek için:

sudo setsebool -P httpd_can_network_connect 1

Veya PHP-FPM soketi için:

sudo semanage fcontext -a -t httpd_var_run_t "/run/php-fpm/www.sock"
        sudo restorecon -v "/run/php-fpm/www.sock"

5. Güvenlik Duvarı (Firewall) Sorunları:
* Belirti: Web sitesine erişilememesi, bağlantı zaman aşımı.
* Çözüm: Eğer firewalld kullanıyorsanız, HTTP (80) ve HTTPS (443) portlarının açık olduğundan emin olun.

sudo firewall-cmd --add-service=http --permanent
        sudo firewall-cmd --add-service=https --permanent
        sudo firewall-cmd --reload

6. PHP-FPM veya Web Sunucusu Logları:
* Herhangi bir sorunla karşılaştığınızda, PHP-FPM loglarını (/var/log/php-fpm/www-error.log) ve web sunucusu loglarını (Apache için /var/log/httpd/error_log, Nginx için /var/log/nginx/error.log) kontrol edin. Bu loglar, sorunun kök nedenini belirlemenize yardımcı olacaktır.

Geri Alma (Gerekirse)

Her ne kadar dikkatli bir planlama ve test süreci izlense de, bazen yükseltme işlemi beklenmedik sorunlara yol açabilir ve geri alma ihtiyacı doğabilir. Bu nedenle, yükseltme öncesi aldığınız tam yedeklemeler kritik öneme sahiptir.

1. Tam Yedeklemeden Geri Yükleme:
En güvenli geri alma yöntemi, yükseltme öncesi aldığınız tam sistem yedeğini geri yüklemektir. Bu, sunucunuzu yükseltme işlemi hiç yapılmamış gibi önceki durumuna döndürecektir. Bu işlem, sunucunuzun büyüklüğüne ve yedekleme stratejinize bağlı olarak zaman alabilir.

2. PHP Paketlerini Geri Alma (Daha Karmaşık):
Eğer sadece PHP paketlerini geri almak isterseniz:
* Önce PHP 7 paketlerini kaldırın:

sudo yum remove php* -y

* Ardından, REMI deposunu devre dışı bırakmanız ve eski PHP sürümünüzün bulunduğu depoyu etkinleştirmeniz (veya varsayılan CentOS deposunu kullanmanız) gerekebilir.
* Eski PHP sürümünü ve uzantılarını tekrar kurun:

# Örneğin, eğer PHP 5.6 kullanıyorsanız ve REMI'de bu sürüm varsa
        # sudo yum module reset php -y
        # sudo yum module enable php:remi-5.6 -y
        # sudo yum install php php-cli php-fpm php-mysql php-gd -y

        # Veya CentOS varsayılan deposundan eski sürümü kurmak için (eğer mevcutsa)
        # sudo yum --disablerepo=remi install php php-cli php-fpm php-mysql -y

* Eski php.ini ve web sunucusu yapılandırma dosyalarınızı geri yükleyin.
* PHP-FPM ve web sunucusunu yeniden başlatın.

Bu yöntem, tam yedekten geri yüklemeye göre daha riskli ve karmaşıktır, çünkü bağımlılıklar ve yapılandırma farklılıkları sorun yaratabilir. Bu nedenle, her zaman tam sistem yedeğini öncelikli geri alma yöntemi olarak düşünmelisiniz.

Sonuç

CentOS 7 üzerinde PHP 7’ye yükseltme, web uygulamalarınızın performansını ve güvenliğini önemli ölçüde artıracak değerli bir adımdır. Bu süreç, dikkatli planlama, adım adım uygulama ve titiz testler gerektirir. Makalede belirtilen adımları takip ederek, sisteminizi güvenli bir şekilde güncelleyebilir ve PHP 7’nin sunduğu tüm avantajlardan faydalanabilirsiniz.

Unutmayın, her sunucu ve uygulama ortamı farklıdır. Bu rehber genel bir yol haritası sunar, ancak kendi spesifik gereksinimlerinize ve mevcut yapılandırmanıza göre ayarlamalar yapmanız gerekebilir. Her zaman yedeklemelerinizi alın ve herhangi bir büyük değişiklik yapmadan önce bir test ortamında deneme yapmayı düşünün. Başarılı bir yükseltme sonrası, web siteleriniz ve uygulamalarınız daha hızlı, daha güvenli ve daha modern bir PHP ortamında çalışacaktır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

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

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.