Siteniz açılmıyor. Beyaz sayfa var, ya 500 Internal Server Error hatası veriyor, ya da WordPress "maksimum bellek kullanımı doldu" mesajını gösteriyor. Eğer yeni bir betik yüklediyseniz veya PHP sürümünü panelden değiştirdiyseniz, sorunun tam olarak PHP ayarları olduğu, kodunuz olmadığı yüksek olasılıkla doğrudur. Bu metin tam da bu an için yazıldı: neyi nerede değiştireceksiniz, neden bazı değişiklikler uygulanmıyor ve hangi sayıyı gerçekten yükseltmeniz gerekiyor.
Önce hangi PHP sürümünün çalıştığını anlayın
Herhangi bir değişiklikten önce gerçek çıktıyı görün. Alan adı kökünde info.php adında bir dosya oluşturun ve şu içeriği ekleyin:
<?php phpinfo(); ?>
Ardından adresini tarayıcıda açın. İki şey arayın: gerçek php.ini yolunu gösteren Loaded Configuration File satırı ve PHP Version satırı. Eğer Loaded Configuration File yolu boş veya (none) ise, hiçbir özel php.ini dosyası yüklenmemiş demektir ve diğer dosyalarda yaptığınız her değişiklik etkisizdir. Bu, kafa karışıklığının en yaygın nedenlerinden biridir.
SSH'niz varsa komut satırından daha hızlı bir yöntem:
php -v
php -i | grep -E "memory_limit|max_execution_time|upload_max_filesize"
CLI sürümünün, web sunucusunun alan adı için çalıştırdığı sürümden farklı olabileceğini unutmayın. phpinfo() içinde gördüğünüz sayı referanstır, terminal çıktısı değil.
PHP sürümünü tüm sunucu için değil, tek bir alan adı için değiştirin
Paylaşımlı hostingde PHP sürümü genellikle alan adı yönetim panelinden seçilir. cPanel'de yol MultiPHP Manager'dır; DirectAdmin'de PHP Version Selector bölümüdür. Sürümü açılır menüden seçip kaydedersiniz. Değişiklik hemen uygulanır, ancak her zaman bedelsiz değildir.
Birçok kişiyi şaşırtan nokta: PHP 7.4'ten 8.1 veya 8.2'ye yükseltme, eski eklentileri devre dışı bırakabilir. Sürüm değişikliğinden sonra site beyaz sayfa olduysa, hemen önceki sürüme dönmek yerine önce hata günlüğüne bakın. cPanel'de günlük genellikle ~/logs içinde veya Errors bölümünden görüntülenebilir. PHP Fatal error: Uncaught Error: Call to undefined function gibi bir satır arayın; bu, bir eklentinin yeni sürümle uyumlu olmadığı anlamına gelir.
Hangi sürümü seçmeliyim
WordPress siteniz varsa ve eklentileriniz güncelse, PHP 8.1 veya 8.2'yi seçin. Hız farkı belirgindir ve eski sürümlerin güvenlik desteği sona ermiştir. Yıllardır güncellenmeyen ve tutmak zorunda olduğunuz bir eklentiniz varsa, yerine bir alternatif bulana kadar 7.4'te kalın. Bu gerçek bir ödünleşimdir: güvenlik ve hız, uyumluluğa karşı. Ben pratikte 8.1'i seçiyorum ve bir eklenti başarısız olursa, PHP sürümünü değil o eklentiyi değiştiriyorum.
PHP eklentilerini yalnızca gerektiğinde etkinleştirin
Eklentiler panelden etkinleştirilir. cPanel'de Select PHP Version bölümü ve ardından Extensions sekmesi. Onay kutularını işaretleyip kaydedersiniz. Liste genellikle mysqli, curl, gd, mbstring, zip, intl, opcache ve onlarca başka öğe içerir.
Burada hata yapılır: kullanıcı "sorun çözülsün" diye tüm eklentileri etkinleştirir. Sonuç, her istekte daha fazla bellek tüketimi ve bazen eklentiler arasında çakışmadır. WordPress kullanıyorsanız, gereken minimumlar şunlardır: mysqli, curl, gd veya imagick, mbstring, zip, json, xml. Geri kalanları yalnızca belirli bir eklenti hata mesajında adını geçirdiğinde etkinleştirin.
Eklentilerin yanlış etkinleştirildiğinin işareti şudur: site çalışır ama TTFB yükselmiştir ve her PHP sürecinin bellek tüketimi öncekinden fazladır. Bu durumla karşılaşırsanız, eksiksiz hosting kaynak sınırları referansı her sayının neyi hesapladığını açıklar.
memory_limit ve max_execution_time'ı doğru ayarlayın
En çok destek çağrısı oluşturan iki sayı bunlardır. memory_limit varsayılan değeri genellikle 128M veya 256M'dir ve max_execution_time 30 saniyedir. Birkaç ağır eklentili WordPress için 256M yetersizdir ve 512M daha mantıklıdır. max_execution_time için, içerik içe aktarma veya yedekleme işlemleri için 300 değeri makuldür.
Bu değerleri üç yerde değiştirebilirsiniz ve öncelik sırası önemlidir:
- Alan adı kökünde veya hosting tarafından belirtilen yolda özel
php.inidosyası. En güçlü seçenektir ve o alan adının tüm isteklerini etkiler. .htaccessdosyası,php_value memory_limit 512Mgibi satırlarla. Yalnızca PHP, CGI veya PHP-FPM değil, Apache modülü olarak çalıştırıldığında işe yarar.wp-config.phpdosyası,define('WP_MEMORY_LIMIT', '512M');ile. Yalnızca WordPress içinde etkilidir ve hosting katı bir üst sınır koymuşsa etkisiz kalır.
.htaccess içinde değişiklik yaptıktan sonra 500 Internal Server Error hatası alırsanız, sunucu bu direktife izin vermiyor demektir. O satırı silin ve php.ini kullanın. Bu hata anlık ve açıktır, ancak .htaccess'i yanlış düzenlerseniz ve site erişilemez hale gelirse, geri almak daha zor olur. Düzenlemeden önce her zaman bir kopya alın.
Panelden yükseltilemeyen sınırlar
Paylaşımlı hostingde memory_limit ve max_execution_time üst sınırı sağlayıcı tarafından belirlenir. Üst sınırın üzerinde bir değer girerseniz, panel bunu yok sayar veya üst sınıra döndürür. Bunu değişiklikten sonra phpinfo() içinde kontrol edin; sayı değişmemişse, üst sınır uygulanmış demektir. Bu durumda iki yolunuz var: kodu ve eklentileri optimize etmek veya php.ini üzerinde tam kontrol sağlayan özel sunucuya geçmek.
PHP ayarlarını komut satırından ve betikten kontrol edin
Site açılmadığında ve phpinfo()'yu göremediğinizde SSH kullanın. SSH erişiminiz yoksa, ücretsiz web yöneticisi araçları aracılığıyla alan adı durumunu ve DNS kayıtlarını kontrol edebilirsiniz; böylece sorunun sunucuya ulaşım yolunda değil PHP'de olduğundan emin olabilirsiniz.
Beyaz sayfa yerine gerçek hataları görmek için, yürütülebilir dosyanın başına geçici olarak şu iki satırı ekleyin:
ini_set('display_errors', 1);
error_reporting(E_ALL);
Ve hatayı bulduktan sonra mutlaka display_errors'ı kapatın. Açık kalırsa, dosya yolları ve veritabanı ayrıntıları herkes tarafından görülebilir. Bu, denetimlerde sıkça gördüğüm ve güvenlik sonuçları olan hatalardan biridir.
WordPress hataları için, WordPress ve PHP'de beyaz sayfa sorununu giderme yolu aynı işi daha ayrıntılı olarak adım adım açıklar. Sorun alan adı değişikliğinden sonra ortaya çıktıysa, siteyi yeni alan adına taşıma kılavuzu PHP ayarlarıyla ilgili ipuçları içerir.
Kaynak tüketimi hakkında bir not
memory_limit'i yükseltmek sorunu çözmez, gizler. Bir betik 128M bellek ile tükeniyorsa, muhtemelen sonsuz bir döngüsü vardır veya büyük veri üzerinde sayfalama olmadan çalışıyordur. Üst sınırı yükseltmek yalnızca daha fazla tüketmesine izin verir ve paylaşımlı hostingde diğerlerinin payını da yer. Sitenizin bellek tüketimi sürekli artıyorsa, sayıyı yükseltmeden önce, gerçekte neyin tüketildiğini anlamak için Entry Process ve ziyaretten farkı bölümünü okuyun.
Yüksek trafikli siteler veya hassas PHP ayarlarına ihtiyaç duyan uygulamalar için, ServerNet Linux hosting panelden sürüm seçme ve parametreleri ayarlama imkanı verir; ancak php.ini üzerinde tam kontrole ve özel eklenti derlemeye ihtiyacınız varsa, özel sunucu daha doğru seçimdir.
Sık sorulan sorular
wp-config.php'de memory_limit'i değiştirdikten sonra neden hiçbir değişiklik görmüyorum?
Çünkü hosting sunucu düzeyinde katı bir üst sınır koymuştur ve sizin değeriniz bunun üzerindedir. Gerçek sayıyı phpinfo() çıktısında kontrol edin; hâlâ önceki değerse, değişiklik uygulanmamıştır. Bu durumda özel php.ini kullanmalısınız veya destek ekibiyle izin verilen üst sınır hakkında konuşmalısınız.
htaccess'teki php_value ile php.ini arasındaki fark nedir?
php.ini alan adı veya sunucu düzeyinde yüklenir ve tüm istekleri etkiler. .htaccess içindeki php_value yalnızca PHP, Apache modülü olarak çalıştırıldığında işe yarar. Sunucu PHP-FPM ise, bu satırlar yok sayılır veya 500 hatası verir. Emin olmak için önce php.ini'yi deneyin.
WordPress için hangi PHP sürümü uygundur?
Yeni WordPress sürümleri için PHP 8.1 veya 8.2 en iyi seçimdir. 7.4 sürümü artık güvenlik desteği almıyor ve üzerinde kalmak risklidir. Bir eklenti yeni sürümle uyumlu değilse, yerine başkasını koyun; bir eklenti yüzünden eski PHP sürümünü tutmak kötü bir ödünleşimdir.
Sorunun PHP ayarlarından mı yoksa site kodundan mı olduğunu nasıl anlarım?
Alan adı kökünde <?php echo "ok"; ?> içeren basit bir dosya oluşturup açın. Bu dosya açılırsa ama site açılmazsa, sorun site kodunda veya eklentilerindedir. Bu dosya da hata verirse, sorun PHP ayarlarında veya sunucudadır. Bu basit test çoğu durumda doğru yönü gösterir.
Sonraki adım: hemen şimdi phpinfo()'yu açın ve memory_limit, max_execution_time ve upload_max_filesize olmak üzere üç sayıyı not edin. Beklediğinizle uyuşmuyorsa, tam oradan başlayın.