LIONFIN
Web Hosting

PHP Memory Limit Artırma: cPanel, Plesk, .user.ini ve WordPress

6 dk okuma Güncelleme: 1 görüntülenme
PHP Memory Limit Artırma: cPanel, Plesk, .user.ini ve WordPress

PHP memory limit (memory_limit), tek bir PHP betiğinin bir istek boyunca kullanabileceği en yüksek bellek miktarıdır; betik bu sınırı aştığında çalışırken durdurulur ve sayfa 500 hatası ya da beyaz ekranla sonuçlanır. Sınır, kontrolden çıkan tek bir betiğin sunucudaki tüm belleği tüketmesini önleyen bir emniyet kemeridir.

Ağır bir eklenti, büyük bir içe aktarma ya da yüksek çözünürlüklü görsel işleme varsayılan değeri kolayca aşabilir. LIONFIN Linux hosting paketlerinde PHP sürümünü panelden seçersiniz ve bellek sınırı da aynı paneldeki PHP ayarlarından değiştirilir; asıl önemli olan, artışın sorunu gerçekten çözüp çözmediğini doğrulamaktır.

Kısa cevap

PHP memory limit değerini artırmak için cPanel’de MultiPHP INI Editor, Plesk’te PHP Settings ekranında memory_limit değerini örneğin 256M yapın. Panel kullanamıyorsanız site köküne .user.ini dosyası ekleyin; VPS’te php.ini dosyasını düzenleyip PHP-FPM’i yeniden başlatın. WordPress için wp-config.php dosyasına WP_MEMORY_LIMIT sabitini ekleyin. Sonucu phpinfo() ile doğrulayın; hosting paketinin bellek kotasını bu ayar aşamaz.

PHP memory_limit nedir, varsayılan değer ne kadardır?

memory_limit, PHP’nin her istek için ayrı ayrı uyguladığı bir üst sınırdır; ayrılmış bellek değil, izin verilen en yüksek tüketimdir. PHP’nin kendi varsayılanı 128M değeridir; hosting sağlayıcıları ve paneller bunu farklı ayarlayabilir. Değer birimle yazılır: M megabayt, G gigabayt anlamına gelir; -1 sınırsız demektir ve paylaşımlı ortamda kullanılmamalıdır.

Hata mesajları sınırı bayt cinsinden verir; dönüştürmek için:

Mesajdaki baytAyar değeri
6710886464M
134217728128M
268435456256M
536870912512M

Sınır süreç başınadır: aynı anda on PHP isteği çalışıyorsa her biri ayrı ayrı bu değere kadar bellek kullanabilir. Değeri gereğinden yüksek tutmak bu yüzden yoğun anlarda toplam bellek tüketimini de büyütür.

“Allowed memory size exhausted” hatası ne anlama gelir?

Bu hata, betiğin PHP memory limit değerine ulaştığını ve daha fazla bellek isteyemediği için durdurulduğunu söyler. Tipik satır:

PHP Fatal error:  Allowed memory size of 268435456 bytes exhausted (tried to allocate 65536 bytes) in /home/kullanici/public_html/wp-content/plugins/ornek-eklenti/export.php on line 214

Burada sınır 256 MB’tır ve betik son 64 KB’lık isteğinde takılmıştır. Satırdaki dosya belleğin tükendiği yeri gösterir; tüketimin asıl sorumlusu başka bir eklenti olabilir. Hata ekranda görünmüyorsa site klasöründeki error_log dosyasında ya da WordPress’te hata ayıklama açıkken wp-content/debug.log dosyasında bulunur; günlük okumanın genel adımları 500 Internal Server Error çözümü rehberindedir.

Farklı bir mesaj olan Out of memory (allocated …) (tried to allocate … bytes) ise PHP’nin kendi sınırına değil, işletim sisteminin ya da hosting hesabının bellek sınırına takıldığını gösterir. Bu durumda memory_limit değerini artırmak işe yaramaz; hesabın fiziksel bellek kotasına bakmak gerekir.

PHP memory limit artırma yöntemleri: hangisi ne zaman?

Hangi yöntemi kullanacağınız, PHP’nin nasıl çalıştığına ve sunucuya erişim düzeyinize bağlıdır:

YöntemNeredeKapsamNot
cPanel MultiPHP INI EditorSoftware → MultiPHP INI EditorAlan adıCloudLinux sunucularda Select PHP Version → Options sekmesi de olabilir
Plesk PHP SettingsWebsites & Domains → PHP SettingsAlan adıKaydedince PHP süreçleri yeniden başlar
.user.iniSite köküKlasör ve alt klasörlerPHP-FPM ve FastCGI’de okunur; varsayılan ayarla değişiklik en geç 300 saniyede devreye girer
php.iniVPS’te sunucu yapılandırmasıSunucu ya da PHP havuzuPHP-FPM yeniden başlatılmalı
ini_set()Uygulama koduYalnızca o betikSunucu bu fonksiyonu kapatmış olabilir
WP_MEMORY_LIMITwp-config.phpWordPressYalnızca yükseltir; paket kotasını aşamaz

Panel ekranları değişikliği sizin yerinize doğru dosyaya yazdığı için ilk tercih olmalıdır. .user.ini dosyasındaki 300 saniyelik gecikme, PHP’nin bu dosyayı önbelleğe almasından (user_ini.cache_ttl) kaynaklanır. cPanel’de sürüm ve ayar ekranlarının ayrıntıları cPanel PHP sürümü değiştirme rehberindedir.

cPanel ve Plesk’te memory_limit nasıl artırılır?

cPanel’de MultiPHP INI Editor, Plesk’te PHP Settings ekranından memory_limit değerini değiştirip kaydetmeniz yeterlidir; dosya düzenlemeniz gerekmez.

cPanel

  1. Software → MultiPHP INI Editor ekranını açın ve Basic Mode sekmesinde alan adını seçin.
  2. memory_limit satırına yeni değeri yazın, örneğin 256M.
  3. Apply düğmesine basın.

Sunucuda CloudLinux PHP seçicisi kullanılıyor ve siteniz oradan seçilen bir sürümle çalışıyorsa ayar Software → Select PHP Version → Options sekmesinden yapılır; hangisinin etkin olduğunu doğrulama adımı gösterir.

Plesk

  1. Websites & Domains altında alan adının PHP Settings bağlantısını açın.
  2. memory_limit listesinden bir değer seçin ya da Custom ile kendiniz yazın.
  3. Sayfanın altındaki OK ya da Apply düğmesine basın.

Plesk’te sürüm ve çalışma modu seçimi Plesk PHP sürümü değiştirme rehberinde ayrıntılı anlatılır. Girdiğiniz değer kabul edilmiyor ya da kaydettiğiniz hâlde değişmiyorsa paketiniz için bir üst sınır tanımlanmış olabilir.

.user.ini, php.ini ve WordPress ile PHP memory limit artırma

Panel erişiminiz yoksa ya da ayarı yalnızca bir klasöre uygulamak istiyorsanız dosya yöntemlerini kullanın.

.user.ini (paylaşımlı hosting): Site köküne bu adla bir dosya oluşturun ve tek satır yazın:

memory_limit = 256M

php.ini (VPS): Ubuntu ve Debian’da PHP-FPM ayarı /etc/php/SURUM/fpm/php.ini dosyasındadır; komut satırı (CLI) ayrı bir dosya kullanır. AlmaLinux ve Rocky Linux’ta dosya genellikle /etc/php.ini, servis ise php-fpm adını taşır. Ubuntu’da PHP 8.3 için örnek:

sudo sed -i 's/^memory_limit = .*/memory_limit = 256M/' /etc/php/8.3/fpm/php.ini
sudo systemctl restart php8.3-fpm

WordPress: wp-config.php dosyasında /* That's all, stop editing! Happy publishing. */ satırının üstüne ekleyin:

define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');

WP_MEMORY_LIMIT ön yüz istekleri, WP_MAX_MEMORY_LIMIT yönetici paneli ve görsel işleme gibi ağır işlemler için geçerlidir. WordPress bu değerleri yalnızca mevcut sınırdan yüksekse uygular; sunucudaki değer zaten büyükse küçültmez. Tek bir betiğe özel artış için kodun başına ini_set('memory_limit', '256M'); satırı da eklenebilir.

Yeni değer nasıl doğrulanır?

Yeni değeri, PHP’nin o klasör için gerçekten kullandığı ayarları listeleyen phpinfo() çıktısıyla doğrulayın:

  1. Site köküne limit-test.php adıyla tek satırlık bir dosya koyun: <?php phpinfo();
  2. Tarayıcıda açıp memory_limit satırını bulun. Local Value sütunu o klasör için geçerli değeri, Master Value sunucu varsayılanını gösterir.
  3. İşiniz bitince dosyayı hemen kaldırın; bu çıktı sunucu yolları ve modül listesi gibi saldırganın işine yarayacak ayrıntılar içerir.

SSH’ta komut satırının kullandığı değeri görmek için:

php -i | grep memory_limit

Bu çıktı web isteklerinin değil, komut satırının ayarını gösterir; ikisi farklı php.ini dosyaları kullanabildiği için değerler farklı çıkabilir. Cron ile çalışan betikler de çoğunlukla komut satırı ayarına tabidir. WordPress’te Araçlar → Site Sağlığı → Bilgi ekranındaki Sunucu bölümü PHP bellek sınırını, WordPress sabitleri bölümü ise WP_MEMORY_LIMIT ve WP_MAX_MEMORY_LIMIT değerlerini listeler.

PHP memory limit neden artmıyor ya da hata neden sürüyor?

Değer değiştiği hâlde hata sürüyorsa üç olasılık vardır.

Paket kotası: Paylaşımlı hostingde her hesabın toplam fiziksel bellek kotası vardır; CloudLinux kullanan sunucularda bu sınır PMEM olarak geçer ve memory_limit ne olursa olsun hesabın süreçleri kotayı aşamaz. Ayrıntılar hosting kaynak limitleri rehberindedir.

Yanlış dosya ya da çalışma modu: Ayar, sitenin kullanmadığı bir PHP sürümüne ya da başka bir klasöre yazılmış olabilir; Local Value değişmediyse ayar okunmuyordur.

Verimsiz ya da sızdıran kod: Sınırı 512M değerine çıkarmak, binlerce kaydı tek seferde belleğe alan bir içe aktarma ya da sonsuz döngüye giren bir eklenti için yalnızca hatanın daha geç gelmesini sağlar. Görsel işleme de bellek ister: GD kitaplığı 6000 × 4000 piksellik bir fotoğrafı açarken yalnızca piksel verisi için yaklaşık 96 MB kullanır. Görselleri yüklemeden önce küçültmek, içe aktarmaları parçalara bölmek ve sorunlu eklentiyi güncellemek kalıcı çözümdür. Sürekli yüksek bellek isteyen uygulamalar için kaynakları size ayrılan bir VPS sunucu daha uygundur.

Sık Sorulan Sorular

PHP memory limit kaç olmalı?

Çoğu WordPress sitesi için 256M yeterlidir; WooCommerce, sayfa oluşturucular ve büyük içe aktarmalar 512M isteyebilir. Değeri ihtiyaçtan çok yükseltmek performans kazandırmaz, yalnızca hatalı bir betiğin daha fazla bellek tüketmesine izin verir. En doğrusu, hata aldığınız işlemi gözleyip sorunu çözen en düşük değeri seçmektir.

memory_limit değerini -1 yapmak güvenli mi?

Bu değer PHP tarafındaki sınırı tamamen kaldırır. Kontrolden çıkan tek bir betik bu durumda hesabın ya da sunucunun belleğini tüketebilir ve diğer istekleri de düşürür. Paylaşımlı hostingde hesap kotası yine devrededir, ama hata daha anlaşılmaz biçimde ortaya çıkar. Canlı sitelerde somut bir değer kullanın; sınırsız değeri yalnızca kontrollü komut satırı işleri için düşünün.

.user.ini dosyasına yazdım ama değer değişmedi, neden?

PHP bu dosyayı önbelleğe aldığı için değişiklik birkaç dakika gecikebilir; varsayılan bekleme süresi 300 saniyedir. Süre geçtiği hâlde değer aynıysa sunucudaki PHP çalışma biçimi .user.ini okumuyor olabilir, örneğin Apache modülü. Bu durumda panel ekranını kullanın. Dosya adının noktayla başladığını ve dosyanın doğru klasörde durduğunu da kontrol edin.

WP_MEMORY_LIMIT ile memory_limit arasındaki fark nedir?

memory_limit PHP’nin kendi ayarıdır ve sunucuda çalışan tüm betikleri etkiler. WP_MEMORY_LIMIT ise WordPress’in açılışta PHP sınırını yükseltmek için kullandığı bir sabittir; yalnızca WordPress isteklerinde ve mevcut sınırdan yüksekse uygulanır. Sunucu ini_set fonksiyonunu kapatmışsa ya da paketin bellek kotası düşükse bu sabit tek başına sorunu çözmez.

Hosting paketimde bellek yetmiyorsa ne yapmalıyım?

Önce hangi işlemin belleği tükettiğini hata günlüğünden belirleyin ve eklenti, görsel ya da içe aktarma tarafındaki gereksiz tüketimi azaltın. Sorun trafik ya da veri büyüdükçe artıyorsa daha yüksek kaynak sunan bir pakete geçmek ya da bellek miktarını kendiniz belirleyebileceğiniz bir VPS’e taşınmak kalıcı çözümdür.

Bu makale yardımcı oldu mu?

Geri bildiriminiz için teşekkürler!

kişi faydalı buldu

Paylaş

X LinkedIn WhatsApp

Sorunuz mu var? Destek ekibimize yazın.