e
sv

PHP 8 Hakkında WordPress Kullanıcılarının Bilmesi Gerekenler

php 8 hakkinda wordpress kullanicilarinin bilmesi gerekenler EE1MiTrU | Tekno Deha
avatar

Emir Aydın

  • e0

    Mutlu

  • e0

    Eğlenmiş

  • e0

    Şaşırmış

  • e0

    Kızgın

  • e 0

    Üzgün

PHP 8 Hakkında WordPress Kullanıcılarının Bilmesi Gerekenler

26 Kasım 2020 tarihinde piyasaya sürülen PHP 8.0 sürümü, Wordpress sitelerinin güç aldığı PHP’nin çıkan en son sürümü. Lisandaki bu yeni güncelleme, geliştiricilerin işine yarayacak birçok yeni özellik ve uzun vadede güvenliği artıracak değişikliklerle birlikte geldi.

Bu değişikliklerden en bariz olanı birtakım fonksiyonların kaldırılması. PHP 8 sürümünde bir evvelki sürümlere göre çok daha büyük değişiklikler bulunuyor. Bu yazımıda da WordPress güvenliği konusunda yıllarca bölümde var olan ve eklentileriyle bilinen Wordfence Security’nin makalesinde belirttiği hassas noktalara, tekliflere göz atalım.

PHP 8’e Çabucak Yükseltmeli Miyim?

Katiyen hayır.

Halihazırdaki WordPress’inizi stabil bir takviye sunulana kadar yükseltmemelisiniz. WordPress geliştiricilerinin 18 Kasım tarihinde yaptıkları söyleşiye nazaran 5.6 sürümüyle bir arada PHP 8 ile beta halinde ahenk sağlanması planlanıyor. Şu anda da yakın vakitte yayınlanan en şimdiki olan sürüm WordPress 5.6 ve PHP 8 dayanağı gelmiş olsa bile birtakım meseleler mevcut. Beta olarak piyasaya sürülen sürümde temel WordPress fonksiyonları çalışsa bile bir müddetliğine bilinmedik yanılgılar, temalarda bozulma üzere birtakım meseleler yaşanabilir. Bunu WordPress de hesaba katarak kusurların olabildiğince çabuk test edilip kapatılabilmesi için PHP 8 kullanarak ek testler yapmaya başladı.

Halihazırda WordFence Security eklentilerinden birisini kullanıyorsanız, PHP 8 ile ahenk için çalışmalar devam ediyor. Geliştiricilerin kendi blog sayfasından yapmış oldukları açıklamaya nazaran, kısmi uyumluluk ve dayanak sunulacak ama stabil bir kullanım ve tam manasıyla uyumluluk sağlanabilmesi için ek testler uygulanması gerekiyor..

Bütün bunların dışında birçok Wordpress tema ve eklentisinin PHP 8 sürümüyle çabucak uyumlu olmayacağını üstünü çizerek belirtmek isteriz. Olağan bir kullanımda görünüşte hiçbir sorun gözükmese bile art planda olumsuz şeyler gerçekleşiyor olabilir. Öte yandan WordPress’in 5.7 sürümünün PHP 8 ile tam uyumlu olmasını bekliyoruz ki Mart 2020’de çıkacak bu sürüme kadar muhtemelen PHP 8.0.1 sürümü de çıkmış ve birinci kusurlar giderilmiş olacak.

PHP 8 Hangi Kıymetli Değişiklikleri İçerir?

Geliştiricilerin bir kısmı uzun zamandır PHP’nin kimi öteki alternatiflere kıyasla çok daha inançsız olduğunu düşünüyordu. Bu hala tartışmaya açık bir konu çünkü rastgele bir programlama dilinin/web programlama lisanının güvenlik açısından ne derece inançlı yahut inançsız olduğunu anlamak güç. Yeniden de PHP 8’den evvelki PHP sürümlerine bakıldığında, yeni sürüm eskilerde olduğu üzere kimi kod kusurlarına karşı toleranslı davranmıyor. Eski sürümlerde küçük yanılgılar olması durumunda yanlışın ne olduğuna bağlı olarak kodlar çalışmaya devam edebiliyordu. Bundan dolayı güvenliğin biraz daha sıkılaşmış olduğu düşünülüyor.

PHP 8 sürümü ayrıyeten başka PHP sürümlerine göre çok daha sert bir yazım tipi kullanmaya başlıyor. İşlevlerin kabul ettiği ve çalıştırdıkları döngülere artık daha çok dikkat edilmeye başlanıyor ve kullanıcıdan alınan girdilerin nasıl değerlendirildiği biraz daha kıymet kazanıyor. Daha evvelce çeşitli bildirimler halinde kendisini muhakkak eden sıkıntılardan çok ikazlar ortaya çıkıyor. İhtarlar halinde çıkanlar ise artık direkt kusur olarak gösteriliyor. Böylelikle kod yapısı daha pak ve düzgün bir hale getirilmiş oluyor.

Özetle PHP 8 sürümünün başka sürümlere göre pek de esnek bir yapıya sahip olmadığını söyleyebiliriz. Evvelki sürümlerde yanılgılı kodun çalıştırılması bu kadar sıkıntı değildi.

Ayrıyeten PHP 7.x sürümüyle tedavülden kaldırılan kimi işlevler ve çeşitli özellikler bu sefer PHP 8 ile bir arada daha kesin bir halde büsbütün kaldırılıyor:

  • $php_errormsg değişkeni
  • create_function() işlevi
  • mbstring.func_overload ini yönergesi
  • real tip
  • allow_url_include ini yönergesi
  • restore_include_path() işlevi
  • each() işlevi
PHP 8 sürümü 24 Kasım 2020’de çıkmıştı.

WordPress Eklentileri ve Temalar Nasıl Etkilenecek?

Bu değişkenler, işlevler ve yönergelerin artık pek kullanılmadığını bilsek de, Wordfence tarafından yapılan araştırmaya göre create_function kullanan ve milyonlarca web sitesi tarafından kullanılan tanınan 5.000 kadar WordPress eklentisi mevcut. Bu durumda yükseltme yapmanız durumunda sorun yaşama ihtimaliniz epey yüksek. Tekrar de birtakım durumlar için eski PHP sürümleriyle uyumluluk ismine bunların kullanımına müsaade verilmiş olabilir. Her şeye karşın birçok eklenti maalesef PHP 8’e geçişte kapsamlı biçimde düzenlenmezse, sıkıntılara neden olacak.

Çok az sayıdaki eklentiler ve temalar da ekseriyetle üçüncü taraf kütüphanelerden yararlanır. WordPress geliştiricileri uyumluluk için bunların da güncellenmesini bir mühlet daha bekleyebilir. Şayet bu kütüphaneler PHP 8 ile uyumlu olacak formda güncellenmez ise, bu kitaplıkların alternatiflerini kullanmak hatta ve hatta PHP 8 uyumlu olması için temalarla eklentileri sıfırdan yazmak gerekebilir.

Yoast SEO eklentisinin geliştiricileri tarafından bu geçiş sürecinde öteki geliştiriciler tarafından neler yapılması gerektiğine dair birtakım teklifler ve uyumluluk raporları hazırlandı. Şayet bir geliştiriciyseniz kesinlikle okumanızı öneriyoruz.

PHP 8 Hakkındaki Güvenlik Kaygıları

Güvenlik açısından sorun çıkartan birçok işlev ve özellik PHP 8 ile daha evvelki paragraflarda belirtildiği üzere kaldırılmış olsa da, insan elinden çıkan her şeyde olduğu üzere çeşitli yanlışları ve kusurları da hesaba katmak gerekiyor. Her yeni sürümün çıkmasının akabinde bu biçim tasalar lisana getirilir.

PHP, “Type Juggling” ismi verilen bir şeye müsaade ediyor. Bu özellik sayesinde sayı içeren dizeleri tam sayı yahut ondalık sayılarla birebir halde ele almaya yarayan ve katı karşılaştırmaya yarayan operatörü === yerine == kullanılması durumunda bu iki farklı tıp ortasında matematiksel karşılaştırma yapılabilir demektir. Bu birçok geliştirici için özünde yararlı olabilirken, bazen de yazılımda alışılmamış davranışların meydana gelmesine neden olabilir.

Type Juggling’in neden meseleye yol açabileceğine WordFence makalesinde güzelce değinmiş. Klasik bir örnek olan 0==”blah” bedeli true olarak dönerken, PHP 8 düzeltme emeliyle bu stil davranışları nizama sokmaya çalışırken yanılgılara neden olabilir. Örneğin 0==”0blah” false olarak döndürülebilir.

Temelde bu güvenliği artıracaktır ancak standart olmayan cookie ile tanımlama bilgilerini kullanarak parola denetimlerini atlamak amacıyla PHP’nin “Type Juggling” özelliğinin davranışı kullanılabilir ve bu formda kullanılabilecek bir dizi istismar var. Ek olarak çok sayıda eklenti yahut çeşitli ek bileşen kritik fonksiyonlar için gevşek karşılaştırmalardan yararlanıyor. Bunlar genelde PHP 8 sürümüne yükseltme sonrası kullanılmaya devam edilecek ama bu durumdan dolayı yeni güvenlik açıkları da ortaya çıkabilir.

Ayrıyeten PHP 7.x sürümünden 8’e geçiş esnasında eklenti geliştiricileri ve birtakım tema geliştiricileri kod güncellemek için uğraşmak yerine, takviyesi keserek atıl halde bırakabilir. Bu yaygın temalardan ve eklentilerden çok, daha az web sitesi tarafından kullanılan tema ve eklentilerde görülebilir. Geliştiricisi tarafından terk edilen eklentilerde ve temalarda çıkacak olan güvenlik açıkları ekseriyetle düzeltilmez. Bu da büyük bir güvenlik riskidir.

Başka bir güvenlik riski de geliştiricilerden çok barındırıcı ve site sahipleri yüzünden ortaya çıkar. Eski eklentilerini sağlıklı bir formda çalıştırmak için web sitesi sahipleri inançsız olan eski PHP sürümlerinde kalmaya devam edebilirler. Bütün bunların dışında birtakım ziyanlı yazılımlar niyetlerini gizlemek amacıyla PHP’nin hata toleransı özelliğiyle kaldırılmış olan işlevlerine da güveniyor. Bu şekildeki ziyanlı evraklar PHP 8 konseyi ortamda ya çalışmayı bırakır ya da kendisini ele verir. Ya da vakit içerisinde makûs emelli yazılım muharrirleri tarafından uyumlu olacak formda geliştirilmeye devam edilir.

PHP 8 ile Gelen Performans Değişiklikleri

PHP 8 ile birlikte gelen heyecan verici bir öteki özellik ve gelişme ise JIT yahut tam ismiyle “Just In Time / Tam Zamanında” derleme. PHP bildiğiniz üzere yorumlanan bir lisan. Yani derlenmez, tersine çalışma esnasında makine koduna çevrilir. Örneğin bu formda çalışan başkalarından örnek bir programlama lisanı ise Python’dur.

JIT özelliği sayesinde sıkça kullanılan kodun kayıtları tutulmaya devam edilir ve tıpkı kod tekrar kullanıma sunulacaksa uygun biçimde optimize edilir. Bu, muhakkak işlevlerin kullanıldığı yapılarda çok büyük performans artışı sağlar. JIT’in JavaScript üzere öteki lisanlarda de kullanılmaya başlanıp, eklenmesinden sonra yeni uygulamaların adeta patlamasına neden olmuştur. Örneğin JavaScript yardımıyla çalışan ve kullanıcıyla etkileşime giren sanal makineler web sitelerinin oluşmaya başladığı birinci günlerde hayal bile edilemiyordu. Artık geçmişte sunucuya belli misyonları yerine getirtmek için saf PHP kütüphanelerini kurmak da daha pratik hale geldi.

Bütün bunlar bir yana, WordPress gibi web içerik idare sistemleri için yapılabilecek ve ortaya çıkacak performans güzelleştirmesi maalesef asgarî seviyede olacak. Ortalama bir WordPress kullanıcısının yahut geliştiricilerin bu yeni özellikten yararlanmaları hayli uzun vakit alacak üzere gözüküyor. Her ne kadar bütün bu hoş özellikler geliştiricilerin işini kolaylaştırsa da, WordPress sitelerinde geriye yönelik olan uyumluluk bozulacağından, gelecekte yayınlanacak tema ve eklentilerde bu özelliklerden yararlanılması pek ihtimal dahilinde değil.

PHP 8

Geliştiricilerin Kodları PHP 8 için Güncellemeleri Ne Kadar Sürer?

Her PHP sürümünün ortalama iki yıllık bir hayat döngüsü var. Bu döngüye kusurların giderilmesi ve güvenlik açıklarının da kapatılması dahil edilirse bu mühlet üç seneye çıkabilir. PHP 7.4 sürümü 2019 yılının Kasım ayında yayınlandı ve 7.4 sürümündeki kusurların Kasım 2021’e kadar düzeltileceği biliniyor. Kasım 2022’ye kadar da güvenlik meseleleri düzeltildikten sonra hayat döngüsünün sonuna gelinecek. Bu nedenle Kasım 2022 tarihini PHP 7.x sürümünün kesin sonlandırılma tarihi olarak düşünebiliriz. Bu hesaptan 2022 yılına kadar web uygulamalarının en az PHP 8.0 ile yahut daha risksiz ve şimdiki sürümü destekliyor olmaları gerek.

Sonuç

PHP 8’e tam manasıyla geçiş, PHP’nin şu ana kadar görmüş olduğu en kapsamlı değişim ve geçiş olacak. Uzun vadece buna değecek değişiklikler ve yenilikler gelmiş olsa da, WordPress site sahipleri ila geliştiriciler de bu kısa vakit diliminde ahenk açısından zorlanabilirler. Şayet bir web sitesi sahibiyseniz, öncelikle temalarınızın ve eklentilerin uyumlu formda güncellenip güncellenmediğini, hatta güncelleme alıp almayacağını denetim edin. Ahenk sağlayamayan ve terk edilen eklentiler varsa, alternatiflere bakmaya başlayabilirsiniz.

Özetle, bu yazıda PHP 8 ile gelen değişikliklerden, WordPress site sahiplerinin bundan nasıl etkileneceğine ayrıntılıca göz attık. Sorularınız varsa Technopat Sosyal’de bahis açabilir, eklemek istediğiniz bir şey varsa yorumlarda belirtebilirsiniz.

Sıradaki içerik:

PHP 8 Hakkında WordPress Kullanıcılarının Bilmesi Gerekenler