cPanel'den PHP sürümünü değiştirdin. Siteyi kontrol ediyorsun, eski sürüm görünüyor. Ya da site yeni sürümde ama SSH'de php -v başka bir şey söylüyor. Burada çoğu zaman tek bir PHP ayarını değil, üç ayrı çalışma yolunu karşılaştırıyoruz: web, terminal ve zamanlanmış görev.
İlk iş hangi tarafta fark olduğunu belirlemek. Terminalden çalışan PHP'ye CLI deniyor; cron ise belirlediğin saatlerde komut çalıştıran görev sistemi. Sırf terminal farklı sürüm gösterdi diye panel seçiminin uygulanmadığını söylemeyelim. Aynı şekilde paneldeki etiketi de uygulamanın gerçekten kullandığı sürümün tek kanıtı kabul etmeyelim.
Web isteğinin cevabını ölç
Yetkili olduğun, erişimi sınırlı test dizininde küçük bir kontrol dosyası oluştur:
<?php
header('Content-Type: text/plain; charset=utf-8');
echo 'version=', PHP_VERSION, PHP_EOL;
echo 'sapi=', PHP_SAPI, PHP_EOL;
echo 'ini=', php_ini_loaded_file() ?: '(none)', PHP_EOL;
echo 'script=', __FILE__, PHP_EOL;
Doğru alan adını ve protokolü kullanarak dosyayı aç. script satırı yanlış belge köküne veya başka bir uygulama kopyasına bakıp bakmadığını ayırır. Test yolunda önbellek varsa önce onu devreden çıkar; PHP sürümünü eski bir HTML yanıtından okumak istemiyoruz.
INI dosya yolu yapılandırmayı, SAPI ise çalışma arayüzünü anlamaya yardımcı olur. Tek başına SAPI adından hangi hosting panelinin sürümü yönettiğine karar verme.
MultiPHP ile PHP Selector aynı ayar ekranı değil
MultiPHP Manager, alan adının veya sanal sunucunun PHP seçimini yönetir. Doğru alan adını seçtiğini ve kalıtım durumunu kontrol et. Bir alt alan adının ayarı ana alan adıyla aynı olmak zorunda değildir.
CloudLinux bulunan ortamda PHP Selector da bulunabilir. Native PHP, Alt-PHP, kullanılan handler ve sağlayıcının entegrasyonu hangi seçimin etkili olduğunu değiştirebilir. “İki ekranda da aynı sürümü seç, kesin çözülür” yaklaşımı yerine sağlayıcının kurulum düzenini doğrula.
Root yöneticisiysen sitenin dosyalarının sunulduğu dizini (belge kökü) ve PHP dosyalarını hangi çalıştırıcıya göndereceğini belirleyen ayarı (handler) incele. Hesap kullanıcısıysan bunu destek ekibinden iste. Yönetilen .htaccess handler satırlarını rastgele silmek başka alan adlarını veya alt dizinleri de etkileyebilir; önce yedeğini ve kapsamını belirle.
Terminal hangi php dosyasını buluyor?
command -v php
readlink -f "$(command -v php)"
php -v
php --ini
Bunlar o SSH hesabının ortamını gösterir. Root ile uygulama kullanıcısının PATH değerleri farklı olabilir. Web 8.5'e geçmiş olsa bile terminal komutu sistemdeki başka bir dalı çalıştırabilir.
EasyApache kurulumunda belirli çalıştırıcıyı kontrol etmek için, o dalın gerçekten kurulu olduğunu doğruladıktan sonra tam yolu kullanabilirsin:
/opt/cpanel/ea-php85/root/usr/bin/php -v
/opt/cpanel/ea-php85/root/usr/bin/php --ini
Bu yol bir EasyApache örneği; Alt-PHP veya başka bir sağlayıcı düzeni için evrensel yol değildir. Sırf CLI değişsin diye sistem genelindeki php bağlantısını elle değiştirme. Aynı sunucuda başka uygulamalar o bağlantıyı kullanıyor olabilir.
Cron satırındaki çalıştırıcıyı da oku
Görevde yalnız php yazıyorsa cron'un ortamı farklı bir dosya bulabilir. Zaten tam yol yazıyorsa o yol eski dala sabitlenmiş olabilir. Örneğin aşağıdaki yapı, çalıştırıcıyı açıkça seçer; hesap ve uygulama yolunu kendi ortamına göre düzenle:
/opt/cpanel/ea-php85/root/usr/bin/php /home/ACCOUNT/project/bin/task.php
Bu görev gerçek veri değiştirebiliyorsa denemeden önce yaptığı işi kontrol et. Çalıştırıcıyı düzeltmek, aynı görevi iki kez çalıştırmanın yan etkilerini ortadan kaldırmaz. Uzun ömürlü kuyruk işçilerinin de önceki süreçle devam edebileceğini hesaba kat.
Üç kontrolü yan yana koy
Web kontrol dosyasındaki sürüm, uygulama hesabının CLI sürümü ve cron satırının kullandığı çalıştırıcı artık açık olmalı. Fark kasıtlıysa sorun olmayabilir; yanlışlıkla oluşuyorsa ilgili yolu düzelt. Sürüm eşleştiğinde gerekli eklentileri ve uygulama akışlarını da geçiş kontrol listesindeki gibi doğrula.
Not: Test dosyası sunucu yollarını gösterir. Genel erişime açık bırakma ve kontrol bitince kaldır.