Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
php.ini, PHP çalışırken kullanılacak genel yapılandırma ayarlarını tutan ana ayar dosyasıdır. Hata gösterimi, bellek sınırı, dosya yükleme boyutu, oturum ayarları, zaman aşımı ve eklenti yapılandırmaları gibi davranışlar bu dosyadaki yönergelerle belirlenebilir. PHP başlatıldığında okunur; bu nedenle dosyada yapılan değişikliklerin etkili olması için kullanılan PHP çalışma ortamını yeniden başlatmak gerekebilir.

Örneğin dosyada şu ayar bulunabilir:

INI:
memory_limit = 128M
upload_max_filesize = 20M
post_max_size = 25M
log_errors = On

Bu örnekte bir betiğin ayırabileceği bellek sınırı, yüklenebilecek tek dosyanın üst sınırı, POST verisinin toplam sınırı ve hata kayıtlarının etkinliği ayarlanır. post_max_size değerinin upload_max_filesize değerinden büyük olması gerekir; aksi durumda dosya yükleme beklenenden daha düşük bir sınırla karşılaşabilir.

php.ini nasıl çalışır?​


PHP açılırken bir ana yapılandırma dosyası arar ve bulduğu php.ini dosyasını okur. Kuruluma ve çalıştırma biçimine göre dosyanın konumu değişebilir. Komut satırında çalışan PHP ile web sunucusu üzerinden çalışan PHP aynı kurulumu kullansa bile farklı yapılandırma dosyaları okuyabilir.

Ayrıca PHP, ana dosyadan sonra ek .ini dosyalarını taranan yapılandırma dizininden okuyabilir. Bu dosyalarda aynı yönerge tekrar tanımlanırsa son okunan değer geçerli olabilir. Bu yüzden yalnızca bir php.ini dosyasını değiştirmek, web uygulamasının gerçek çalışma ortamını her zaman değiştirmeyebilir.
Çalışma ortamıDosya kontrolüDeğişiklik sonrası
CLIphp --ini veya php_ini_loaded_file()Komut yeniden çalıştırılır
Apache modülüWeb sunucusunun yüklediği PHP yapılandırmasıWeb sunucusu yeniden başlatılır
CGI veya kalıcı FastCGI/FPMWeb isteğini karşılayan PHP yapılandırmasıCGI yeni süreçte okur; kalıcı FPM için yeniden yükleme gerekebilir
Ek INI diziniphp --ini ile taranan dosyalarÇakışan yönergeler denetlenir

Gerçekten hangi php.ini kullanılıyor?​


Önce dosya yolunu tahmin etmek yerine çalışan PHP'nin bildirdiği konumu kontrol edin. Komut satırına erişiminiz varsa şu komutu çalıştırın:
  1. PHP'nin yapılandırma özetini görüntüleyin:
    Bash:
    php --ini
  2. Çıktıdaki Loaded Configuration File satırını bulun. Burada (none) yazıyorsa ana php.ini yüklenmiyordur.
  3. Aynı çıktıda Scan for additional .ini files ve Additional .ini files parsed satırlarını da inceleyin. Sorun başka bir .ini dosyasındaki ayarın sonradan uygulanmasından kaynaklanabilir.
  4. Değişikliği yalnızca gerçekten kullanılan dosyada yapın ve PHP hizmetini veya web sunucusunu yeniden başlatın.
  5. Sonucu doğrulamak için ayarı tekrar sorgulayın:
    Bash:
    php -r 'echo ini_get("memory_limit"), PHP_EOL;'
Beklenen çıktı, seçtiğiniz değerdir; örneğin 128M. Çıktı eski değeri gösteriyorsa yanlış PHP ortamını kontrol ediyor, değişikliği kaydetmiyor veya başka bir yapılandırma dosyası değeri eziyor olabilirsiniz. Web uygulamasının değeri farklıysa CLI yerine web SAPI'sinin kullandığı PHP yapılandırmasını kontrol edin.

ini_get() etkin değeri okumak içindir. ini_set() ise yalnız çalışma anında değiştirilebilen ve yönetici tarafından kilitlenmemiş yönergeleri değiştirebilir; bu iki işlevin yetkisi aynı değildir. Ancak ini_set() ile yapılan değişiklikler genellikle yalnızca mevcut isteği etkiler; kalıcı sunucu ayarı için uygun php.ini ya da izin verilen yerel yapılandırma yöntemi kullanılmalıdır.

Sık yapılan hatalar​


Yanlış dosyayı düzenlemek: Sunucuda birden fazla PHP sürümü veya SAPI bulunabilir. php --ini yalnızca CLI ortamını gösterir; web tarafındaki PHP farklı bir dosya kullanabilir.

Değişiklikten sonra hizmeti yeniden başlatmamak: Özellikle Apache modülü veya kalıcı PHP işlem yöneticisi kullanan yapılarda eski ayarlar bellekte kalabilir.

Yönergeyi sözdizimi hatalı yazmak: Değerler genellikle ayar = değer biçimindedir. Noktalı virgül ; ile başlayan satırlar yorumdur ve uygulanmaz.

Sınırları tek başına yükseltmek: Dosya yükleme sorunlarında upload_max_filesize yanında post_max_size, zaman aşımı ve web sunucusunun kendi istek sınırları da birlikte değerlendirilmelidir.

Sık sorulan sorular​


php.ini dosyası yoksa PHP çalışır mı?​


Evet. PHP, ana yapılandırma dosyası yüklenmeden de çalışabilir; ancak varsayılan ayarlar kullanılır ve bazı özel yapılandırmalar uygulanmaz. php --ini çıktısında yüklenen dosya bulunup bulunmadığını görebilirsiniz.

php.ini ile .user.ini aynı şey midir?​


Hayır. .user.ini belirli dizinler için kullanılabilen yerel yapılandırma dosyasıdır ve özellikle CGI/FastCGI ortamlarında geçerlidir. Her PHP yönergesi bu dosyada değiştirilemez; yönergenin izin verilen yapılandırma düzeyi belirleyicidir.

php.ini dosyasını web sitesi klasörüne koymak yeterli midir?​


Genellikle hayır. PHP'nin ana php.ini dosyasını nerede arayacağı çalışma biçimine ve kurulum ayarlarına bağlıdır. Web sitesi klasörüne rastgele bir dosya koymak yerine çalışan SAPI'nin kullandığı yolu doğrulamak ve desteklenen yerel yapılandırma yöntemini kullanmak gerekir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic