Paylaşımlı bir hosting hesabında en sık karşılaşılan sorunlardan biri "bu uygulama PHP 8.2 istiyor ama sunucuda 7.4 çalışıyor" ya da tam tersi, "eski scriptim yeni PHP'de patlıyor" cümleleriyle özetlenir. Yıllarca bu tür durumlar bir destek talebiyle, hosting sağlayıcısının sunucu genelinde sürüm değiştirmesiyle çözülürdü. Ancak aynı sunucuda yüzlerce farklı hesap barınırken herkesi tek bir PHP sürümüne mahkûm etmek pratik değildir. İşte CloudLinux PHP Selector bu çıkmazı ortadan kaldırmak için var. Sunucuya dokunmadan, tamamen kendi hesabınızın içinde, birkaç tıkla PHP sürümünüzü ve o sürümde açık olacak eklentileri kendiniz belirlersiniz.
PHP Selector, adından da anlaşılacağı gibi bir "seçici"dir. Sistem yöneticisinin sunucuya kurduğu birden fazla PHP sürümünü size bir menü olarak sunar ve siz kendi alan adınız için hangisini kullanacağınıza karar verirsiniz. Bu yazıda PHP Selector'ın neden CloudLinux'a özgü olduğunu, "native" sürümle alternatif sürümler arasındaki farkı, imagick ve intl gibi eklentileri nasıl açacağınızı, php.ini değerlerini panelden nasıl değiştireceğinizi ve tüm bunların cPanel'in MultiPHP yönetimiyle nasıl örtüştüğünü kıdemli bir sistem yöneticisi gözüyle anlatacağım. Amaç, bir sonraki sürüm sorununda destek beklemeden işi kendiniz halledebilmeniz.
PHP Selector Nedir ve Neden CloudLinux'a Özgüdür#
PHP Selector, CloudLinux işletim sisteminin bir bileşenidir. CloudLinux, CentOS/AlmaLinux tabanlı, özellikle paylaşımlı hosting için tasarlanmış ticari bir sunucu işletim sistemidir ve en bilinen özelliği "LVE" (Lightweight Virtual Environment) adı verilen, her hesabı kendi CPU/RAM sınırları içinde izole eden teknolojidir. PHP Selector de bu izolasyon felsefesinin bir parçasıdır: her hesap, komşularından bağımsız olarak kendi PHP ortamını yönetebilir.
Buradaki kritik nokta şudur: Standart bir CentOS veya Ubuntu sunucusunda PHP tek bir sistem paketidir; onu değiştirdiğinizde sunucudaki herkes etkilenir. CloudLinux ise "alt-php" (alternatives PHP) denilen bir mekanizmayla PHP 5.6'dan 8.3'e kadar sürümleri sunucuya paralel olarak kurar. Bu sürümler birbirine karışmadan, /opt/alt/ altında ayrı ayrı durur. PHP Selector, işte bu kütüphaneyi kullanıcıya açan arayüzdür. Dolayısıyla PHP Selector'ı yalnızca CloudLinux lisanslı sunucularda görürsünüz; klasik bir VPS'te ya da CloudLinux'suz bir cPanel kurulumunda bu menü çıkmaz.
Hesabınızın CloudLinux üzerinde olup olmadığını cPanel ana ekranında "Select PHP Version" ya da Türkçe arayüzde "PHP Sürümü Seç" bölümünün varlığından anlayabilirsiniz. Eğer bu menü karşınıza "PHP Selector" başlığıyla, sürüm açılır listesi ve eklenti kutucuklarıyla geliyorsa CloudLinux üzerindesiniz demektir. Clou.TR paylaşımlı hosting paketleri CloudLinux üzerinde çalışır, bu yüzden aşağıdaki adımların tamamını kendi panelinizden uygulayabilirsiniz. PHP sürümlerinin genel yaşam döngüsü ve uyumluluk mantığı hakkında daha geniş bir bakış için PHP sürüm yönetimi yazısına da göz atmanızı öneririm.
Native Sürüm ile Alternatif Sürüm Arasındaki Fark#
PHP Selector'ı ilk açtığınızda sürüm listesinin en üstünde çoğu zaman "native" ya da "yerel" yazan bir seçenek görürsünüz. Bunu anlamadan sürüm değiştirmek, ileride kafa karıştırıcı davranışlara yol açabilir, o yüzden bu ayrımın üzerinde biraz duralım.
Native sürüm, sunucunun kendi standart PHP paketi olarak kurulmuş olan sürümdür. Bu, sistem yöneticisinin sunucu geneli için varsayılan yaptığı PHP'dir ve genellikle EasyApache üzerinden yönetilir. Native sürüm, CloudLinux'un alt-php koleksiyonundan gelmez; doğrudan işletim sisteminin kök PHP kurulumudur. Native seçtiğinizde, sürümünüz sunucu yöneticisi ne belirlediyse ona sabitlenir ve o değişirse siz de dolaylı olarak etkilenirsiniz.
Alternatif (alt-php) sürüm ise CloudLinux'un /opt/alt/php74, /opt/alt/php82 gibi dizinlerde tuttuğu, birbirinden tamamen bağımsız PHP kurulumlarıdır. Listeden örneğin "8.2" seçtiğinizde, hesabınız native paketten koparılıp bu izole sürüme yönlendirilir. Bu sürümlerin en büyük avantajı, eklentilerini ve php.ini değerlerini kutucuklarla özgürce yönetebilmenizdir; native sürümde bu esneklik çoğu zaman kısıtlıdır.
Aşağıdaki tablo iki yaklaşımı özetliyor:
| Özellik | Native (yerel) | Alternatif (alt-php) |
|---|---|---|
| Kaynak | Sunucu kök PHP paketi | CloudLinux /opt/alt/phpXX |
| Sürümü kim belirler | Sunucu yöneticisi | Siz (hesap sahibi) |
| Eklenti seçimi | Sınırlı | Kutucuklarla serbest |
| php.ini panelden düzenleme | Genelde hayır | Evet |
| Sunucu güncellemesinden etkilenme | Doğrudan | Yok, izole |
Pratik tavsiye: Uygulamanız belirli bir sürüm gerektiriyorsa ve o sürümde eklenti/ayar kontrolü istiyorsanız native yerine alternatif bir sürüm seçin. Native'i yalnızca "sunucunun önerdiği neyse onu kullanayım, elle uğraşmayayım" dediğiniz durumlarda tercih edin.
PHP Sürümünü Panelden Değiştirmek#
Sürüm değiştirmek düşündüğünüzden çok daha basittir ve saniyeler sürer. cPanel'e giriş yaptıktan sonra "Software" bölümünde yer alan "Select PHP Version" (PHP Sürümü Seç) simgesine tıklamanız yeterli.
Açılan ekranda üç ana sekme ya da alan görürsünüz: sürüm açılır menüsü, eklenti (extensions) kutucukları ve php.ini ayarları (options/switches). Adımlar şöyle işler:
- Sayfanın üstündeki "Current PHP version" açılır menüsünü açın.
- Kullanmak istediğiniz sürümü seçin (örneğin 8.2).
- "Set as current" ya da "Apply" düğmesine basın.
Değişiklik anında etkin olur; sunucuyu yeniden başlatmanıza ya da destek talebi açmanıza gerek yoktur. Uygulamanızın gerçekten yeni sürümde çalıştığını doğrulamanın en temiz yolu, kök dizininize küçük bir kontrol dosyası koymaktır:
# public_html içinde geçici bir kontrol dosyası
echo "<?php echo 'Aktif sürüm: ' . PHP_VERSION; ?>" > ~/public_html/surum-kontrol.php
Ardından https://alanadiniz.com/surum-kontrol.php adresini ziyaret ederek aktif sürümü görebilir, iş bittikten sonra bu dosyayı silmeyi unutmazsınız. Daha detaylı bilgi için phpinfo() çıktısını da kullanabilirsiniz, ancak güvenlik açısından bu dosyayı da işiniz bitince kaldırın:
<?php
// info.php — kontrol sonrası mutlaka silin
phpinfo();
Sürüm geçişinde dikkat etmeniz gereken tek şey uyumluluktur. Örneğin PHP 7.4'ten 8.x'e geçerken bazı eski eklentiler veya tema kodları uyarı verebilir. Bir üretim sitesini yükseltmeden önce mutlaka bir yedekleme alın ve mümkünse önce bir test/staging kopyasında deneyin. WordPress kullanıyorsanız, geçiş öncesi eklenti ve tema uyumluluğunu kontrol etmek büyük dertlerden korur; bu konuda düzenli bakım için WordPress bakım hizmetimiz de işinizi kolaylaştırır.
Eklenti Açmak imagick intl ve Diğerleri#
PHP Selector'ın belki de en çok işe yarayan tarafı eklenti (extension) yönetimidir. Birçok uygulama, PHP çekirdeğinde varsayılan gelmeyen ek modüllere ihtiyaç duyar. En sık istenenler şunlardır:
- imagick — Görsel işleme (küçük resim üretme, WebP dönüştürme). WordPress, medya yoğun siteler ve galeri eklentileri sıklıkla ister.
- intl — Uluslararasılaştırma; çok dilli siteler, Laravel/Symfony tabanlı uygulamalar ve tarih/para biçimlendirme için gerekir.
- soap — WHMCS, e-fatura entegrasyonları ve bazı ödeme sağlayıcıları için.
- gd — imagick alternatifi/tamamlayıcısı temel görsel işleme kütüphanesi.
- mbstring — Çok baytlı (Türkçe dâhil) metin işlemleri; neredeyse her modern uygulama ister.
- opcache — Bytecode önbelleği; performansı ciddi biçimde artırır.
Eklenti açmak için "Select PHP Version" ekranında sürümünüzü seçtikten sonra "Extensions" kutucuk listesine gelin. İhtiyacınız olan eklentinin yanındaki kutucuğu işaretleyin; değişiklik otomatik kaydedilir. Örneğin bir WordPress sitesinin "Site Health" panelinde "imagick modülü kurulu değil" uyarısı görüyorsanız, buradan imagick kutucuğunu işaretlemeniz sorunu çözer.
Bir eklentinin gerçekten yüklendiğini komut satırından da doğrulayabilirsiniz. Terminal (SSH) erişiminiz varsa CloudLinux'ta alt-php ikilisini doğrudan çağırmak en güvenilir yoldur:
# Aktif alternatif sürüm için yüklü eklentileri listele
php -m | grep -i -E 'imagick|intl|soap'
# Belirli bir alt-php sürümüyle kontrol (örnek: 8.2)
/opt/alt/php82/usr/bin/php -m | grep imagick
Şuna dikkat edin: Eklenti kutucukları sürüme özeldir. PHP 7.4 altında imagick açtıysanız, 8.2'ye geçtiğinizde o sürümde tekrar açmanız gerekebilir. Yani her sürümün kendi eklenti seti vardır. Ayrıca listede göremediğiniz özel bir eklenti varsa (native sürümde bulunmayan egzotik bir modül gibi), bunu genellikle hesap düzeyinde açamazsınız; sunucu tarafında kurulum gerektirir ve bir destek talebiyle çözülür. Böyle özel senaryolarda tam kontrol isteyen kullanıcılar için yönetimli bir VDS sunucu ya da sunucu yönetimi hizmeti daha uygun olabilir.
php.ini Değerlerini Panelden Yönetmek#
Sürüm ve eklenti seçtikten sonra sıra en çok "çalışmıyor" şikâyetine yol açan üçüncü alana gelir: php.ini değerleri. Klasik bir sunucuda php.ini dosyasını elle düzenlemeniz, hatta bazen SSH ile sunucuya erişmeniz gerekir. PHP Selector ise en kritik ayarları aynı ekrandaki "Options" (Seçenekler) alanından panelden değiştirmenize izin verir.
Panelden ayarlayabileceğiniz tipik değerler ve pratikte ne zaman gerektikleri:
| Ayar | Ne işe yarar | Ne zaman artırılır |
|---|---|---|
memory_limit | Betiğin kullanabileceği azami RAM | "Allowed memory size exhausted" hatasında |
upload_max_filesize | Tek dosya yükleme sınırı | Büyük medya/yedek yüklerken |
post_max_size | Toplam POST verisi sınırı | Form ve çoklu dosya yüklemede |
max_execution_time | Betiğin çalışma süresi (sn) | Uzun içe/dışa aktarımlarda |
max_input_vars | İzin verilen form değişkeni sayısı | Menü/eklenti yoğun WordPress'te |
display_errors | Hataları ekrana basar | Yalnızca geliştirmede açın |
Örneğin WooCommerce'te büyük bir ürün CSV'si içe aktarırken "Maximum execution time exceeded" hatası alıyorsanız, max_execution_time değerini 30'dan 300'e çekmek çoğu zaman yeterlidir. Aynı şekilde 25 MB'lık bir medya dosyası yüklerken hata alıyorsanız hem upload_max_filesize hem post_max_size değerini yükseltmelisiniz; ikincisini unutmak sık yapılan bir hatadır çünkü post_max_size, upload_max_filesize değerinden büyük olmak zorundadır.
Panelden yaptığınız bu değişiklikler, arka planda hesabınıza özel bir .user.ini ya da CloudLinux'un dahili yapılandırması olarak yazılır ve yalnızca sizin hesabınızı etkiler; komşu hesaplara dokunmaz. Değişikliğin uygulandığını görmek isterseniz yükleme yaptığınız uygulamanın (WordPress → Araçlar → Site Sağlığı → Bilgi → Sunucu) ayar sayfasından teyit edebilir ya da yine küçük bir kontrol dosyasıyla ilgili değeri okuyabilirsiniz:
<?php
echo 'memory_limit: ' . ini_get('memory_limit') . PHP_EOL;
echo 'upload_max_filesize: ' . ini_get('upload_max_filesize') . PHP_EOL;
echo 'max_execution_time: ' . ini_get('max_execution_time') . PHP_EOL;
Bir uyarı: display_errors değerini yalnızca hata ayıklarken açın ve iş bitince kapatın. Canlı bir sitede hataların ziyaretçiye görünür olması hem kötü bir deneyimdir hem de dosya yolları ve veritabanı bilgileri gibi ipuçlarını sızdırarak güvenlik riski yaratır. Genel güvenlik katmanı için ayrıca SSL sertifikası ve WAF gibi önlemleri de değerlendirin.
PHP Selector ile MultiPHP Arasındaki İlişki#
Kafa karışıklığının en yoğun olduğu nokta burasıdır, çünkü cPanel'de iki ayrı yerde PHP sürümü görürsünüz: CloudLinux'un "PHP Selector"ı ve cPanel'in kendi "MultiPHP Manager" aracı. Bunların hangisinin geçerli olduğunu bilmezseniz, "sürümü değiştirdim ama site hâlâ eski sürümde" gibi tuhaf durumlarla karşılaşabilirsiniz.
Kısaca ayrım şudur: MultiPHP Manager, cPanel'in EasyApache 4 altyapısıyla gelen, "hangi alan adı hangi sistem PHP sürümünü kullansın" sorusunu yanıtlayan araçtır. Sürümleri alan adı bazında atar (bir hesapta birden çok alan adı varsa her birine farklı sürüm verebilirsiniz). PHP Selector ise CloudLinux'un alt-php koleksiyonundan seçim yapmanızı, eklenti ve php.ini yönetmenizi sağlar ve hesap genelinde çalışır.
Bir sunucuda CloudLinux ve PHP Selector etkinse, tipik olarak PHP Selector "yönetici" konumdadır ve MultiPHP Manager'da hesabınız için sürüm menüsü "inherit" (miras) olarak görünür ya da düzenlenemez hâle gelir. Yani asıl karar PHP Selector'da alınır. Bunu şöyle özetleyebiliriz:
# Sadeleştirilmiş karar sırası
altyapi:
cloudlinux_php_selector: aktif # varsa öncelikli
cpanel_multiphp_manager: ikincil # Selector aktifken çoğu zaman devre dışı/inherit
sonuc: "Sürüm ve eklenti PHP Selector'dan yönetilir"
Pratik kural: CloudLinux üzerindeyseniz, sürüm ve eklenti işlerini her zaman PHP Selector'dan yapın. MultiPHP Manager'ı yalnızca CloudLinux'un olmadığı klasik cPanel sunucularında birincil araç olarak kullanın. Eğer MultiPHP'de değişiklik yapıp da sonucu göremiyorsanız, büyük ihtimalle PHP Selector devrede demektir ve değişikliği oradan yapmanız gerekir. cPanel'in genel mantığını hatırlamak isterseniz cPanel nedir yazısı iyi bir başlangıç noktasıdır.
Bir de MultiPHP'nin faydalı olduğu bir senaryodan bahsedeyim: .htaccess üzerinden MultiPHP INI Editor ile "Editör Modu"na geçip belirli ayarları görebilir ya da PHP Selector'ın izin vermediği bazı native davranışları inceleyebilirsiniz. Ancak günlük kullanımda ihtiyacınız olan her şey Selector içinde zaten mevcuttur.
Sık Karşılaşılan Sorunlar ve Çözümleri#
Yıllar içinde en çok tekrar eden birkaç durumu ve hızlı çözümlerini toparladım. Bunları bilmek, çoğu zaman destek talebi açmadan işi bitirmenizi sağlar.
Site beyaz ekran veriyor ya da 500 hatası dönüyor. Genellikle yeni bir PHP sürümüne geçtikten sonra bir eklenti veya tema uyumsuzluğu vardır. İlk yapılacak şey display_errors yerine hata günlüğüne bakmaktır. Hata günlüğü çoğunlukla alan adının dizininde error_log adıyla oluşur:
# Son 50 satır hata kaydını incele
tail -n 50 ~/public_html/error_log
Kaydı okuyup "undefined function imagick..." gibi bir satır görürseniz, ilgili eklentiyi Selector'dan açmanız yeterlidir.
Sürümü değiştirdim ama phpinfo hâlâ eskisini gösteriyor. İki olası neden var: Ya değişikliği PHP Selector yerine MultiPHP'den yaptınız (Selector aktifken sonuç vermez), ya da tarayıcı/opcache önbelleği eski çıktıyı gösteriyor. Kontrol dosyasını farklı bir tarayıcıda ya da gizli pencerede açarak önbelleği eleyin.
Eklenti kutucuğunu işaretledim ama görünmüyor. Yanlış sürümün eklenti listesine bakıyor olabilirsiniz. Önce doğru sürümü "current" yapın, ardından o sürümün eklenti listesini kontrol edin; eklentiler sürüme özeldir.
Komut satırındaki php sürümü ile web sürümü farklı. SSH'te php -v çoğu zaman native sürümü gösterir; web ise Selector'daki alt-php sürümünü çalıştırır. Cron işlerinde doğru sürümü kullanmak için ikiliyi tam yolla çağırın:
# Cron içinde doğru alt-php sürümünü çağırma
/opt/alt/php82/usr/bin/php /home/kullanici/public_html/cron.php
Bu ayrım özellikle Laravel artisan komutları veya WP-CLI kullanırken önemlidir; yanlış sürümle çalıştırmak sinsi hatalara yol açar. Sitenizi başka bir sunucudan taşırken bu tür sürüm/eklenti uyumsuzluklarını sizin yerinize gidermemizi isterseniz site taşıma hizmetimiz devreye girer.
Sıkça Sorulan Sorular#
PHP Selector'ı her hosting hesabında görebilir miyim#
Hayır. PHP Selector yalnızca CloudLinux işletim sistemi kurulu sunucularda bulunur. Klasik bir CentOS/AlmaLinux VPS'te ya da CloudLinux lisansı olmayan cPanel kurulumlarında bu menü çıkmaz; onun yerine cPanel'in MultiPHP Manager aracını kullanırsınız. Clou.TR paylaşımlı hosting paketleri CloudLinux üzerinde çalıştığı için PHP Selector menüsü panelinizde hazır gelir.
PHP sürümümü değiştirmek sitemi bozar mı#
Değiştirme işleminin kendisi güvenlidir ve anında geri alınabilir, ancak sitenizin kodu yeni sürümle uyumlu değilse çalışma anında hatalar görebilirsiniz. Bu yüzden önemli bir güncelleme öncesi mutlaka yedek almanız ve mümkünse önce bir test kopyasında denemeniz önerilir. Sorun çıkarsa eski sürüme tek tıkla geri dönebilir, ardından uyumsuz eklenti veya temayı güncelleyerek tekrar deneyebilirsiniz.
imagick ile GD arasında hangisini seçmeliyim#
İkisi de görsel işleme kütüphanesidir ama imagick daha güçlü ve daha fazla format destekler, GD ise daha hafif ve neredeyse her yerde varsayılan bulunur. WordPress gibi platformlar imagick varsa onu tercih eder ve daha kaliteli küçük resimler üretir. En sağlıklısı, uygulamanız hangisini istiyorsa onu açmaktır; birçok durumda ikisini birden açık bırakmak da bir sorun yaratmaz.
php.ini değişikliklerim neden bazen uygulanmıyor#
En yaygın neden, değişikliğin yanlış sürüm için yapılmış olmasıdır; önce aktif sürümü doğru seçtiğinizden emin olun. İkinci sık neden opcache önbelleğidir, birkaç dakika içinde ya da uygulama yeniden çağrıldığında değer güncellenir. Ayrıca bazı barındırma yapılandırmalarında belirli değerlerin üst sınırı sunucu tarafından sabitlenmiş olabilir; böyle bir tavan varsa panelden daha yükseğe çıkamazsınız ve bir destek talebi gerekir.
Cron işlerim yanlış PHP sürümüyle çalışıyor, nasıl düzeltirim#
Cron işleri çoğu zaman sunucunun native php komutunu çağırır, bu da Selector'da seçtiğiniz alternatif sürümden farklı olabilir. Doğru sürümü garantilemek için cron komutunuzda ilgili alt-php ikilisini tam yoluyla belirtin, örneğin /opt/alt/php82/usr/bin/php şeklinde. Böylece cron işiniz web sitenizle aynı PHP sürümünde çalışır ve sürüm farkından doğan tutarsızlıklar ortadan kalkar.
Birden fazla alan adım var, her birine farklı PHP sürümü verebilir miyim#
PHP Selector hesap genelinde çalışır, yani tüm hesap için tek bir alternatif sürüm belirlersiniz. Alan adı bazında farklı sürümler gerekiyorsa bunu MultiPHP Manager üzerinden yönetmeniz ya da her siteyi ayrı bir hosting hesabında barındırmanız gerekir. Çok sayıda müşteri sitesini farklı sürümlerle yönetmek isteyen ajanslar için en temiz çözüm, her siteyi kendi cPanel hesabında izole eden bir reseller planıdır.
Kapanış#
CloudLinux PHP Selector, hosting deneyiminde küçük gibi görünen ama gerçekte çok değerli bir özgürlük sunar: PHP sürümünüzü, eklentilerinizi ve temel php.ini değerlerinizi destek beklemeden, birkaç tıkla, kendi hesabınızın sınırları içinde yönetmek. Native ile alternatif sürüm ayrımını kavradığınızda, doğru eklentileri açtığınızda ve MultiPHP ile ilişkisini anladığınızda, "uygulamam bu sürümü istiyor" türünden sorunlar sizin için birkaç dakikalık rutin işlere dönüşür.
Bu esnekliği en verimli kullanacağınız yer, CloudLinux tabanlı, hızlı ve iyi yapılandırılmış bir altyapıdır. Clou.TR hosting paketleri PHP Selector'ı hazır sunar; WordPress odaklı projeler için WordPress hosting, genel siteler için web hosting ve birden çok müşteri sitesini ayrı hesaplarda yönetmek isteyenler için reseller hosting seçeneklerimize göz atabilirsiniz. Daha fazla kontrol ve izole kaynak istiyorsanız yönetimli sanal sunucu çözümlerimiz de sizi bekliyor. Doğru PHP ortamı, hızlı ve sorunsuz bir sitenin temelidir; kurulumdan itibaren bu temeli sağlam atmanıza yardımcı olmaktan memnuniyet duyarız.