hosting

PHP Ayarlarını Anlamak: memory_limit, max_execution_time ve Yükleme Limitleri

Bellek hatası, yükleme başarısızlığı ve zaman aşımı. PHP sınırlarının birbiriyle ilişkisi, makul değerler ve nerede değiştirileceği. PHP Ayarlarını Anlamak…

PHP Ayarlarını Anlamak: memory_limit, max_execution_time ve Yükleme Limitleri
İçindekiler
  1. En Kritik Beş Ayar
  2. Ayarlar Arasındaki İlişkiler
  3. Yükleme Zinciri
  4. Süre Zinciri
  5. Makul Değerler
  6. Ayarları Nerede Değiştirirsiniz?
  7. Limit Artırmak Her Zaman Doğru Değil
  8. Sonuç
  9. Sıkça Sorulan Sorular (SSS)
  10. "Allowed memory size exhausted" hatası ne demek?
  11. Yükleme limitini artırdım ama hâlâ yükleyemiyorum?
  12. İşlemim 30 saniyede kesiliyor ama PHP sınırım daha yüksek?
  13. Ayar sayfamda bazı alanlar kaydedilmiyor, neden?

PHP Ayarlarını Anlamak: memory_limit, max_execution_time ve Yükleme Limitleri

"Allowed memory size exhausted" hatası aldınız. Ya da büyük bir dosya yüklemeye çalıştınız ve sessizce başarısız oldu. Belki de bir içe aktarma işlemi yarıda kesildi.

Bu üç sorunun ortak kaynağı PHP yapılandırma sınırlarıdır. Bu yazı, Linux hosting ve Windows hosting hesaplarında en çok karşılaşılan PHP ayarlarını ve doğru değerleri anlatıyor.

En Kritik Beş Ayar

Ayar Ne kontrol eder Aşıldığında
memory_limit Bir betiğin kullanabileceği bellek Ölümcül hata, beyaz ekran
max_execution_time Betiğin çalışma süresi İşlem yarıda kesilir
upload_max_filesize Tek dosyanın boyutu Yükleme sessizce başarısız
post_max_size Tüm form verisinin boyutu Form boş gelir
max_input_vars Form alanı sayısı Ayarlar kısmen kaydedilir

Son satır en sinsi olanıdır: çok alanlı bir ayar sayfasını kaydettiğinizde hata almazsınız ama bazı alanlar sessizce kaydedilmez. Menü düzenleri ve büyük ayar formlarında bu sorun sık yaşanır.

Ayarlar Arasındaki İlişkiler

Bu değerler birbirinden bağımsız değildir. Yanlış kurulan ilişkiler, ayarı büyütmenize rağmen sorunun devam etmesine yol açar.

Yükleme Zinciri

Bir dosya yüklenirken üç sınır sırayla devreye girer:

  1. Dosya boyutu upload_max_filesize değerini aşmamalı
  2. Tüm istek gövdesi post_max_size değerini aşmamalı
  3. İşlem memory_limit içinde tamamlanmalı

Doğru sıralama şudur: post_max_size, upload_max_filesize'dan büyük olmalı; memory_limit ise ikisinden de büyük olmalı. Sadece upload_max_filesize'ı büyütmek çoğu zaman işe yaramaz.

Süre Zinciri

PHP'nin çalışma süresi sınırı tek başına yeterli değildir. Web sunucusunun da bir zaman aşımı vardır ve hangisi önce dolarsa işlem o noktada kesilir.

Uzun süren bir işlem 30 saniyede kesiliyorsa ve PHP sınırınız 300 saniyeyse, sınırı koyan web sunucusudur.

Makul Değerler

Paylaşımlı hosting ortamları için genel olarak yeterli aralıklar:

  • memory_limit: Basit siteler için 128 MB, e-ticaret ve ağır eklentili kurulumlar için 256 MB genellikle yeterlidir.
  • max_execution_time: Normal sayfalar için 30 saniye. İçe aktarma gibi işlemler için geçici olarak artırılabilir.
  • upload_max_filesize: Yükleyeceğiniz en büyük dosyaya göre — çoğu site için 64 MB yeter.
  • post_max_size: Yükleme sınırının biraz üzerinde.
  • max_input_vars: Varsayılan 1000'dir; karmaşık ayar sayfalarında 3000'e çıkarmak gerekebilir.

Değerleri gereğinden yüksek tutmak zararsız değildir: yüksek bellek sınırı, hatalı bir kodun sunucu kaynaklarını tüketmesine izin verir. Paylaşımlı ortamlarda bu, hesabınızın askıya alınmasına yol açabilir.

Ayarları Nerede Değiştirirsiniz?

Hosting hesabınızda ayarları değiştirmenin birkaç yolu vardır. Öncelik sırasıyla:

  1. Kontrol paneli. Çoğu panelde PHP ayarları için bir arayüz bulunur. En güvenli ve kalıcı yöntemdir.
  2. Kendi yapılandırma dosyanız. Panelde ayar yoksa, hesabınıza özel bir PHP yapılandırma dosyası oluşturmanız gerekebilir.
  3. Uygulama içi tanım. Bazı uygulamalar kendi yapılandırmalarında bellek sınırı tanımlar.
  4. Destek talebi. Diğer yollar kapalıysa sağlayıcınızdan değişiklik isteyin.

Değişiklik sonrası mutlaka doğrulayın: bir bilgi sayfası oluşturup değerin gerçekten uygulandığını görün. Birçok kullanıcı ayarı değiştirdiğini sanır ama değer aynı kalmıştır — çünkü daha yüksek öncelikli bir tanım onu geçersiz kılmaktadır.

Panelden PHP ayarı değiştirme imkânı, paketten pakete farklılık gösterir. Bu esneklik sizin için önemliyse, paket seçerken bakılacak ölçütlerden biri budur: Linux hosting paketlerinde PHP sürüm seçimi ve ayar düzenleme genellikle panel üzerinden sunulur.

Limit Artırmak Her Zaman Doğru Değil

Sınıra takılıyorsanız ilk soru "nasıl artırırım" değil "neden bu kadar kaynak gerekiyor" olmalıdır.

  • Bellek hatası bir eklentiden geliyor olabilir. Tek bir hatalı eklenti, sınırı ne yaparsanız yapın tüketir.
  • Süre aşımı optimize edilmemiş sorgudan kaynaklanabilir. İndeks eklemek, süreyi artırmaktan iyidir.
  • Büyük içe aktarmalar parçalanabilir. Tek seferde 50 bin kayıt yerine parçalı işlem daha sağlıklıdır.

Sınır artırmak semptomu bastırır; nedeni bulmak sorunu çözer.

Sonuç

PHP sınırları birbirine bağlıdır ve tek bir değeri büyütmek çoğu zaman yetmez. Yükleme sorunlarında sıralamayı hatırlayın: memory_limit > post_max_size > upload_max_filesize. Süre aşımlarında PHP'nin yanı sıra web sunucusu zaman aşımını da kontrol edin. Ayarı değiştirdikten sonra gerçekten uygulandığını doğrulayın — birçok "değişmiyor" şikâyetinin nedeni, daha yüksek öncelikli bir tanımın devrede olmasıdır. Ve sınıra sürekli takılıyorsanız, artırmadan önce nedenini araştırın.

Sıkça Sorulan Sorular (SSS)

"Allowed memory size exhausted" hatası ne demek?

Betik, kendisine tanınan bellek sınırını aştı. Sınırı artırmak geçici çözümdür; asıl neden genellikle hatalı bir eklenti veya çok büyük bir veri kümesini tek seferde belleğe almaya çalışan bir koddur. Önce hangi işlemde oluştuğunu tespit edin.

Yükleme limitini artırdım ama hâlâ yükleyemiyorum?

Muhtemelen post_max_size değeri hâlâ küçük. Yükleme zincirinde üç sınır vardır ve en küçüğü belirleyicidir. post_max_size, upload_max_filesize'dan büyük; memory_limit ise ikisinden de büyük olmalıdır.

İşlemim 30 saniyede kesiliyor ama PHP sınırım daha yüksek?

Sınırı koyan büyük ihtimalle web sunucusudur. PHP'nin çalışma süresi sınırının yanı sıra web sunucusunun da bir zaman aşımı vardır; hangisi önce dolarsa işlem orada kesilir. Sağlayıcınızdan bu değeri de kontrol etmesini isteyin.

Ayar sayfamda bazı alanlar kaydedilmiyor, neden?

Büyük olasılıkla max_input_vars sınırına takılıyorsunuz. Bu sınır aşıldığında hata gösterilmez, fazla alanlar sessizce yok sayılır. Karmaşık ayar sayfaları ve büyük menü yapılarında bu değeri artırmak gerekir.