https://haydenjames.io/understanding-php-memory_limit/ explains the memory_limit setting nicely.Bu liste PHP kurulumunu yapılandırmakta kullanılan yerleşik php.ini yönergelerini içerir. Eklentilerle ilgili yönergeler eklentinin kendi belgelerinde listelenmiş ve açıklanmıştır. Örneğin, oturum yönergeleri ile ilgili bilgiler oturumlar sayfasında bulunabilir.
Bilginize:
Burada listelenen öntanımlılar php.ini yüklenirken kullanılır; değerler kullanıcı içindir ve geliştirilmekte olan php.ini farklı olabilir.
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi | 
|---|---|---|---|
| short_open_tag | "1" | INI_PERDIR | |
| precision | "14" | INI_ALL | |
| serialize_precision | "-1" | INI_ALL | PHP 7.1.0 öncesinde öntanımlı değer 17 idi. | 
| disable_functions | "" | sadece > INI_SYSTEM | |
| disable_classes | "" | sadece php.ini | |
| exit_on_timeout | "" | INI_ALL | |
| expose_php | "1" | sadece php.ini | |
| hard_timeout | "2" | INI_SYSTEM | PHP 7.1.0 ve sonrasında mevcuttur. | 
| zend.exception_ignore_args | "0" | INI_ALL | PHP 7.4.0 ve sonrasında mevcuttur. | 
| zend.multibyte | "0" | INI_ALL | |
| zend.script_encoding | NULL | INI_ALL | |
| zend.detect_unicode | NULL | INI_ALL | |
| zend.signal_check | "0" | INI_SYSTEM | |
| zend.assertions | "1" | Kısıtlamalarla INI_ALL | |
| zend.exception_string_param_max_len | "15" | INI_ALL | PHP 8.0.0 ve sonrasında mevcuttur. | 
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
short_open_tag
       bool
      
        PHP'nin başlangıç etiketinin kısa gösteriminin kullanımına izin
        verilip verilmediğini söyler. PHP'yi XML içinde kullanmak
        isterseniz <?xml ?> satırını kullanmak
        için bu kısa etiket kullanımını iptal edip uzun etiket
        (<?php ?>) kullanabilirsiniz. Aksi
        takdirde satırı <?php echo '<?xml
        version="1.0"?>';?> şeklinde PHP'ye
        yazdırabilirsiniz.
       
Bilginize:
Bu yönerge, sürekli kullanılan
<?=kısaltmasını etkilemez.
precision
       int
      -1 böyle sayıların yuvarlatılmasında geliştirilmiş
        bir algoritmanın kulllanılacağı anlamına gelir.
       
      serialize_precision
       int
      -1 böyle sayıların yuvarlatılmasında geliştirilmiş
        bir algoritmanın kulllanılacağı anlamına gelir.
       
      expose_php
       bool
      PHP'nin kurulu olduğu sunucuda sürüm bilgisini HTTP başlığına eklemek suretiyle (örn: X-Powered-By: PHP/5.3.7) kendini karşıya gösterip göstermeyeceğini belirler.
disable_functions
       string
      disable_classes
       string
      Bu yönerge belli sınıfları iptal etmeye yarar. Sınıf isimleri aralarına virgül konarak belirtilir. Bir sınıfın iptali yalnızca sınıfın gerçeklenmesini engeller.
Bu yönerge kullanılarak ile yalnızca dshili sınıflar iptal edilebilir. Kullanıcı tanımlı sınıflar etkilenmez.
Bu yönerge sadece php.ini içinde atanabilir. httpd.conf dosyasında tanımlanamaz.zend.exception_string_param_max_len
       int
      "0" ile "1000000"
        arasında olmalıdır.
       
      hard_timeout
       int
      max_execution_time yönergesinde atanan zaman aşımına ulaşıldığında PHP özkaynaklarından nazikçe kurtulacaktır. Bu olurken bir şey takılırsa, katı zaman aşımı ayarlanan saniye miktarı kadar ilerleyecektir. Katı zaman aşımına ulaşıldığında PHP hoyratça çıkış yapar. Bu yönergeye 0 atanırsa katı zaman aşımı asla devreye girmez.
PHP katı zaman aşımında durursa ölümcül hata çıktılanır:
Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unknown on line 0
zend.assertions
       int
      1 atandığında, Kararlılık denetimleri kodu üretilir
        ve çalıştırılır (geliştirme kipi). 0 atandığında kod
        yine üretilir fakat çalıştırılmaz. -1 atandığında
        ise kod üretilmez ve bu atama kararlılık denetimlerinin maliyetini
        sıfırlar (üretim kipi).
       
       Bilginize:
Bir süreç üretim kipinde başlatılmışsa, kararlılık denetimleri kodu üretilmediğinden zend.assertions çalışma anında değiştirilemez.
Bir süreç geliştirme kipinde başlatılmışsa, zend.assertions'a çalışma anında
-1atanamaz.
zend.exception_ignore_args
       bool
      İstisnalardan oluşturulan yığın izlerindeki bağımsız değişkenleri hariç tutar.
zend.multibyte
       bool
      Çokbaytlı kodlanmış kaynak dosyalarının çözümlenmesini etkin kılar. Çokbaytlı dizge verisi içinde özel karakterler içeren SJIS, BIG5, vs. gibi karakter kodlamalarını kullanmak için zend.multibyte etkin olmalıdır. UTF-8, EUC gibi ISO-8859-1 uyumlu kodlamalar bu seçeneğin etkinleştirilmesini gerektirmez.
zend.multibyte seçeneğinin etkin olabilmesi için mbstring eklentisi kullanımda (kurulu) olmalıdır.
zend.script_encoding
       string
      Betiğin tepesinde declare(encoding=...) yönergesi görünmediği takdirde bu değer kullanılır. ISO-8859-1 ve UTF-8 ile uyumlu olmayan kodlamalar için zend.multibyte ve zend.script_encoding seçeneklerinin ikisi de etkin olmalıdır.
Kod dizgeleri, mb_convert_encoding() çağrılmış gibi zend.script_enconding'den mbstring.internal_encoding'e çevrilir.
zend.detect_unicode
       bool
      BOM'a (Bayt sıralama imi) ve dosyanın çokbaytlı karakterler içerip içermediğine bakılır. Bu saptama __halt_compiler() çalıştırılmadan önce yapılır. Sadece Zend Multibyte kipinde kullanılabilir.
zend.signal_check
       bool
      Sistemin kapanması sırasında sinyal eylemcilerinin yerleştirilip yerleştirilmediğini sınamak için.
detect_unicode
       bool
      Bayt sırası imine ve dosyanın geçerli çok baytlı karakterleri içerip içermediğine bakar. Bu işlem __halt_compiler() işleme sokulmadan önce yapılır. Sadece Çokbaytlı Zend kipinde kullanılabilir.
exit_on_timeout
       bool
      Bu Apache1 mod_php modülüne özgü bir yönergedir ve PHP icrası sırasında bir zaman aşımı oluştığu takdirde PHP'yi çalıştıran Apache lat sürecinin çıkmasını sağlar. Böyle bir zaman aşımı Apache1 içinde bazı eklentileri kararsız durumda bırakabilen dahili bir longjmp() çağrısına sebep olur. Süreci sonlandırmak suretiyle takılı kalmış kilitler ve bellek temizlenebilir.
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi | 
|---|---|---|---|
| memory_limit | "128M" | INI_ALL | 
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
memory_limit
       int
      
        Bir betiğin ayırmasına izin verilebilecek belleğin azami miktarını
        belirler. Bu yönerge, yetersiz betiklerin bir sunucu üzerinde mevcut
        belleğin tamamını tüketmesini önlemeye yardımcı olur. Belleği
        sınırlamak istemiyorsanız yönergeye -1 değeri
        atayın.
       
Ayrıca bakınız: max_execution_time.
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi | 
|---|---|---|---|
| realpath_cache_size | "4M" | INI_SYSTEM | PHP 7.0.16 ve 7.1.2 öncesinde öntanımlı değer "16K"idi. | 
| realpath_cache_ttl | "120" | INI_SYSTEM | 
Bilginize:
open_basedir kullanımı realpath önbelleğini iptal eder.
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
realpath_cache_size
       int
      PHP tarafından kullanılan realpath önbelleğinin boyunu belirler. PHP'nin çok sayıda dosya açtığı sistemlerde gerçekleştirilen dosya işlemlerinin miktarına bağlı olarak bu değerin arttırılması gerekir.
Boyut saklanan dosyanın yol dizgesinin bayt olarak uzunluğunu artı, arabellek girdisiyle ilişkili verinin miktarını gösterir. Yani, arabellekte daha uzun dosya yolu saklamak için arabellek boyutunu arttırmanız gerekir. Bu değer arabelleklenebilen farklı yolların sayısını doğrudan saptayabilmeyi sağlamaz.
Arabellek girdisi için gereken boyut sistemden sisteme değişir.
realpath_cache_ttl
       int
      Belli bir dosya veya dizin için realpath bilgisini önbellekte tutma süresi (saniye cinsinden). Dosyaların nadiren değiştiği sistemlerde bu değer arttırılabilir.
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi | 
|---|---|---|---|
| arg_separator.output | "&" | INI_ALL | |
| arg_separator.input | "&" | INI_PERDIR | |
| variables_order | "EGPCS" | INI_PERDIR | |
| request_order | "" | INI_SYSTEM|INI_PERDIR | |
| auto_globals_jit | "1" | INI_PERDIR | |
| register_argc_argv | "1" | INI_PERDIR | |
| enable_post_data_reading | "1" | INI_PERDIR | |
| post_max_size | "8M" | INI_PERDIR | |
| auto_prepend_file | NULL | INI_PERDIR | |
| auto_append_file | NULL | INI_PERDIR | |
| default_mimetype | "text/html" | INI_ALL | |
| default_charset | "" | INI_ALL | |
| input_encoding | "" | INI_ALL | |
| output_encoding | "" | INI_ALL | |
| internal_encoding | "" | INI_ALL | 
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
arg_separator.output
       string
      PHP'de üretilen URL'leri bağımsız değişkenlerine ayırmak için kullanılan ayraç.
arg_separator.input
       string
      Girdi olarak verilen URL'leri değişkenlere çözümlemek için PHP tarafından kullanılan ayraçların listesi.
Bilginize:
Bu yönergede belirtilen her karakter bir ayraç olarak ele alınır!
variables_order
       string
      
        EGPCS (Environment, Get,
        Post, Cookie ve
        Server) değişken çözümleme sırası belirtilir.
        Örneğin, değer olarak "SP" belirtilirse, PHP,
        $_SERVER ve $_POST süper küresellerini
        oluşturacak ama $_ENV, $_GET
        ve $_COOKIE süper küresellerini
        oluşturmayacaktır. Değer olarak "" atanırsa hiçbir süper küresel
        atanmayacaktır.
       
         CGI ve FastCGI SAPI'lerinin her ikisi için de
         $_SERVER dizisi ortamdaki değerlerle
         oluşturulur; S, E'nin
         yönergedeki yerinden bağımsız olarak daima ES'e
         eşdeğerdir.
        
Bilginize:
Ayrıca, $_REQUEST dizisinin içeriği ve sırası da bu yönergeden etkilenir.
request_order
       string
      GET, POST ve Cookie değişkenlerinin $_REQUEST dizisinin içindeki sırasını belirler. Yazma işlemi soldan sağa doğru ilerleyerek yeni değerler eskileri geçersiz kılar.
Bu yönerge atanmazsa $_REQUEST dizisinin içeriği variables_order yönergesiyle belirlenir.
        Güvenlik kaygılarından dolayı dağıtımla gelen öntanımlı
        php.ini dosyaları çerezler için
        'C' içermez.
       
auto_globals_jit
       bool
      Etkinleştirildiğinde, SERVER REQUEST ve ENV değişkenleri betik çalıştırıldığı zaman değil, değişkenler kullanıldığı anda (tam zamanında) oluşturulur. Bu değişkenler bir betik içinde kullanılmamışlarsa bu yönergenin varlığı bir başarım kazancıyla sonuçlanacaktır.
SERVER REQUEST ve ENV değişkenlerinin kullanımı derleme sırasında sınanır, dolayısıyla örneğin değişken değişkenler üzerinden kullanılmaları ilklendirilmelerine sebep olmayacaktır.
register_argc_argv
       bool
      enable_post_data_reading
       bool
      post_max_size
       int
      post_max_size değerinden büyük olması gerekir.
       
       
int türünde bir değer kullanıldığında değer baytların
sayısıdır. Büyük bayt değerleri için kullanılabilecek birimlerin gösterimleri
hakkında bilgiyi bu SSS
altında bulabilirsiniz.
       
        Eğer POST verisinin boyu post_max_size
        değerinden büyükse $_POST ve
        $_FILES süper küreselleri
        boş olur. Bu, çeşitli yollarla izlenebilir; örneğin, veriyi işleyen
        betiğe $_GET değişkenini <form
        action="edit.php?processed=1"> ile aktararak ve
        ardından $_GET['processed'] atanmış mı diye
        sınanarak bu yapılabilir.
       
       
Bilginize:
PHP bayt değerleri için K (kilo), M (mega) ve G (giga) birim kısaltmalarını kabul eder. Bunları kullanırsanız PHP dönüşümü otomatik olarak yapacaktır. 32 bitlik sürümleri kullanıyorsanız, 32 bitlik işaretli tamsayı sınırını aşmamaya dikkat edin, aksi takdirde betiğiniz başarısız olacaktır.
| Sürüm: | Açıklama | 
|---|---|
| 5.3.4 | İçerik türü PHP'de tanımlı değilse veya
             içerik türü application/x-www-form-urlencoded ise post_max_size= 0 ataması sınırlamayı iptal
             etmez. | 
| 5.3.2 , 5.2.12 | post_max_size= 0 ataması POST boyutunu
             sınırsız yapar. | 
auto_prepend_file
       string
      Otomatik olarak ana betikten önce çözümlenecek dosyanın ismi belirtilir. Dosya require ile belirtilmiş gibi ana dosyanın başına eklenir; dolayısıyla dosyayı bulmak için include_path kullanılır.
        none özel değeri başa dosya eklemeyi iptal eder.
       
auto_append_file
       string
      Otomatik olarak ana betikten sonra çözümlenecek dosyanın ismi belirtilir. Dosya require ile belirtilmiş gibi ana dosyanın sonuna eklenir; dolayısıyla dosyayı bulmak için include_path kullanılır.
        none özel değeri sona dosya eklemeyi iptal eder.
        
Bilginize: Eğer betik exit() ile sonlanırsa otomatik ekleme gerçekleşmez.
default_mimetype
       string
      Öntanımlı MIME türü. Öntanımlı olarak PHP ortam türünü Content-Type başlığını kullanarak gönderir. Ortam türünün gönderilmesini engellemek için değişkene hiçbir şey atanmamalıdır.
PHP'nin yerleşik öntanımlı ortam türü text/html olarak atanmıştır.
default_charset
       string
      
        "UTF-8" öntanımlı değerdir ve eğer encoding
        kullanılmamışsa bu değer htmlentities(),
        html_entity_decode() ve
        htmlspecialchars() için öntanımlı karakter
        kodlaması olarak kullanılır. Ayrıca:
        iconv.input_encoding,
        iconv.output_encoding ve
        iconv.internal_encoding
        yapılandırma seçeneklerine değer atanmamışsa
        default_charset
        iconv işlevleri için de
        öntanımlı karakter kümesi olur.
        mbstring.http_input,
        mbstring.http_output ve
        mbstring.internal_encoding
        yapılandırma seçeneklerine değer atanmamışsa
        default_charset
        mbstring işlevleri için de
        öntanımlı karakter kümesi olur.
       
PHP tarafından gönderilen Content-Type başlığı header() çağrısı ile değiştirilmedikçe PHP'nin tüm sürümlerinde başlıktaki karakter kümesi değeri bu değer olacaktır.
        default_charset seçeneğine boş değer
        atanması önerilmez.
       
input_encoding
       string
      Bu değer mbstring ve iconv gibi çokbayt modülleri için kullanılır. Öntanımlı değer boş dizgedir.
output_encoding
       string
      Bu değer mbstring ve iconv gibi çokbayt modülleri için kullanılır. Öntanımlı değer boş dizgedir.
internal_encoding
       string
      Bu değer mbstring ve iconv gibi çokbayt modülleri için kullanılır. Öntanımlı değer boş dizgedir ve böyle bir durumda default_charset kullanılır.
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi | 
|---|---|---|---|
| include_path | ".;/path/to/php/pear" | INI_ALL | |
| open_basedir | NULL | INI_ALL | |
| doc_root | NULL | INI_SYSTEM | |
| user_dir | NULL | INI_SYSTEM | |
| user_ini.cache_ttl | "300" | INI_SYSTEM | |
| user_ini.filename | ".user.ini" | INI_SYSTEM | |
| extension_dir | "/path/to/php" | INI_SYSTEM | |
| extension | NULL | sadece php.ini | |
| zend_extension | NULL | sadece php.ini | |
| cgi.check_shebang_line | "1" | INI_SYSTEM | |
| cgi.discard_path | "0" | INI_SYSTEM | |
| cgi.fix_pathinfo | "1" | INI_SYSTEM | |
| cgi.force_redirect | "1" | INI_SYSTEM | |
| cgi.nph | "0" | INI_SYSTEM | |
| cgi.redirect_status_env | NULL | INI_SYSTEM | |
| cgi.rfc2616_headers | "0" | INI_ALL | |
| fastcgi.impersonate | "0" | INI_SYSTEM | |
| fastcgi.logging | "1" | INI_SYSTEM | 
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
include_path
       string
      require, include, fopen(), file(), readfile() ve file_get_contents() işlevleri için dosyaların aranacağı dizinler belirtilir. Dizgenin biçemi sistemin PATH ortam değişkenindeki gibidir: Dizinler Unix'te iki nokta imleriyle, Windows'ta ise noktalı virgüllerle ayrılır.
        PHP, dahil edilecek dosyaları include_path
        içindeki yollarda her dosya için tek tek sırayla arar. Önce ilk yola
        bakar, sonra diğerine, böyle gider. Ya dosyayı bulur ya da
        bir E_WARNING veya bir
        E_ERROR ile döner.
        Bu yönergenin değerini betiğinizin çalışması sırasında
        set_include_path() işleviyle değiştirebilirsiniz.
       
Örnek 1 - Unix include_path
include_path=".:/php/includes"
Örnek 2 - Windows include_path
include_path=".;c:\php\includes"
        Dosya yolu olarak . belirtilmesi çalışılan
        dizinin arama yollarına dahil edilmesini sağlar. Ancak, dahil
        edilen her dosyayı PHP'nin daima denetlemesini isterseniz
        include './dosya' biçemini kullanmak daha
        iyidir.
       
Bilginize:
ENVdeğişkenlerine .ini dosyalarında daima erişilebilmektedir. Dolayısıyla,${LOGIN}ve${USER}.kullanarak home dizinine erişmek mümkündür.Ortam değişkenleri sunucunun çalıştığı sisteme bağlı olarak değişiklik gösterebilir.
Örnek 3 - include_path değişkeninde Unix ${USER} ortam değişkeni kullanımı
include_path = ".:${USER}/pear/php"
open_basedir
       string
      PHP tarafından açılmış dosyaları, dosyanın kendisi de dahil olmak üzere belirtilen dizin ağacı ile sınırlar.
Örneğin bir betik dosya sistemine erişmeye çalışırsa, örneğin fopen() veya gzopen() ile bir dosya açmaya çalışırsa dosyanın yerine bakılır. Dosya belirtilen dizin ağacının dışındaysa PHP bu dosyayı açmayı reddeder. Tüm sembolik bağlar çözümlenir, dolayısıyla bir sembolik bağ kullanarak bu kısıtlamayı aşmak mümkün değildir. Eğer dosya mevcut değilse sembolik bağ çözümlenemeyeceğinden dosyanın kendisi open_basedir ile karşılaştırılır.
        open_basedir dosya sistemi işlevlerinden daha
        fazlasını etkileyebilir; örneğin, MySQL
        mysqlnd sürücülerini kullanacak şekilde
        yapılandırılmışsa LOAD DATA INFILE bu seçenekten
        etkilenir. PHP'nin gelişkin işlevselliğinin çoğu
        open_basedir'ı böyle kullanır.
       
        Betiğin çalışma dizinini belirten nokta (.) özel değeri temel dizini belirtmek
        için kullanılabilir. Bunula birlikte, çalışma dizini
        chdir() ile kolayca değiştirilebilceğinden bunu
        yapmak biraz tehlikelidir.
       
        httpd.conf içinde (örneğin bazı sanal
        konaklarda), open_basedir yönergesi diğer
        "php_admin_value open_basedir none" gibi
        yapılandırma yönergelerinde yapıldığı gibi
        kapatılabilir.
       
Windows altında, dizinleri aralarına noktalı virgül konarak belirtilir. Diğer tüm sistemlerde ikinokta imi kullanılır. PHP'nin Apache modülü olarak kullanıldığı durumlarda open_basedir ile belirtilen yollar artık üst dizinlerinden otomatik olarak miras alınmaktadır.
         open_basedir ile belirtilen kısıt bir önek
         değil bir dizin ismidir.
       
Öntanımlı olarak bütün dosyaların açılmasına izin verilir.
Bilginize:
open_basedirçalışma anında daha da kısıtlayıcı hale getirilebilmektedir. Örneğin, php.ini içindeopen_basediryönergesinde/siteler/dizini belirtilmişse çalışma anında ini_set() işlevi kullanılarak kısıtlama/siteler/tmp/ile daha da daraltılabilir. Çeşitli dizinleri listelerken, işletim sisteminin kısıtlarına aldırmaksızın bir ayraç olarakPATH_SEPARATORsabiti kullanılabilir. PHP 8.3.0 ve sonrasında, open_basedir, ini_set() işlevi kullanılarak çalışma anında ayarlandığında artık üst dizini (..) içeren yolları kabul etmiyor.
Bilginize:
open_basedir kullanımırealpath_cache_size seçeneğine
0atar, dolayısıyla realpath önbelleği iptal olur.
         open_basedir sadece ek bir güvenlik ağıdır,
         hiçbir şekilde kapsamlı değildir ve bu nedenle güvenlik
         gerektiğinde güvenilemez.
        
doc_root
       string
      
        PHP'nin sunucu üzerindeki kök dizini. Sadece boş olmadığı takdirde
        kullanılır. PHP, FORCE_REDIRECT ile derlenmişse, PHP'yi HTTP
        sunucusu altında bir CGI olarak çalıştırıyorsanız
        doc_root yönergesini atamanız
        gerekir (IIS hariç). Bunun yerine aşağıdaki
        cgi.force_redirect
        yapılandırması da kullanılabilir.
       
user_ini.cache_ttl
       int
      
user_ini.filename
       string
      
user_dir
       string
      Kullanıcının ev dizininde PHP dosyalarının bulunduğu ana dizin. Örnek: public_html.
extension_dir
       string
      PHP'nin dinamik olarak yüklenebilen eklentileri arayacağı dizin. Dizinin mutlak yolunun belirtilmesi önerilir. Ayrıca bakınız: enable_dl ve dl().
extension
       string
      PHP başlatılırken dinamik olarak yüklenecek eklentiler.
zend_extension
       string
      PHP başlatılırken yüklenecek dinamik olarak yüklenebilen Zend eklentisinin ismi (örneğin XDebug).
cgi.check_shebang_line
       bool
      
        CGI PHP'nin betiklerin başında #!
        ile başlayan satırın varlığına bakıp bakmayacağını belirler. Betik hem
        PHP CGI hem de tek başına bir betik olarak
        çalışabiliyorsa bu satır gerekebilir. PHP, CGI
        kipinde çalışırken bu satırı atlar, bu yönerge "1" olsa bile satırın
        içeriği yok sayılır.
       
cgi.discard_path
       bool
      Etkinse, the PHP CGI ikili site ağacının dışına güvenle yerleştirilebilir ve .htaccess güvenliğini kimse atlatamaz.
cgi.fix_pathinfo
       bool
      
        CGI için gerçek
        PATH_INFO/PATH_TRANSLATED
        desteği sağlar. PHP'nin önceki davranışı SCRIPT_FILENAME'e
        PATH_TRANSLATED atamak ve PATH_INFO'yu
        kaale almamaktı. PATH_INFO hakkında daha ayrıntılı
        bilgi edinmek için CGI belirtimine bakınız.
        Bu yönergeye 1 atamakla PHP CGI'nin
        CGICGI belirtimine uygun olarak dosya arama yollarını
        düzeltmesi sağlanmış olur. Sıfır atandığında ise PHP'nin önceki davranışı
        etkin olur. Öntanımlı değer sıfırdır. Betiklerinizi
        PATH_TRANSLATED değil SCRIPT_FILENAME
        kullanması için düzeltmelisiniz.
       
cgi.force_redirect
       bool
      PHP'nin çoğu HTTP sunucusunda bir CGI olarak çalışmasının güvenli olmasını sağlamak için bu yönerge gereklidir. Tanımsız bırakılmışsa PHP öntanımlı olarak yönergeyi etkin kılar. Bu yönergeyi etkisiz bırakmakla kendinizi riske atmış olursunuz.
Bilginize:
Windows Kullanıcılarına: IIS kullanıyorsanız buna rahatça sıfır atayabilirsiniz ve hatta bunu yapmalısınız. Bu, OmniHTTPD veya Xitami'nin çalışması için de yapılmalıdır.
cgi.nph
       bool
      Etkinse, cgi'nin her isteğe mutlaka Status: 200 göndermesini sağlar.
cgi.redirect_status_env
       string
      
        cgi.force_redirect yönergesine 1 atanmışsa ve
        Apache veya Netscape (iPlanet) HTTP sunucularını kullanmıyorsanız,
        PHP'nin çalışmaya devam edebileceği bilgisini almak için bakacağı
        bir ortam değişkeni ismini bu yönergeye atamanız
        gerekebilir.
       
Bilginize:
Ne yaptığınız konusunda bir fikriniz yoksa bu yönergeye bir isim atamak güvenlikle ilgili sorunlara yol açabilir.
cgi.rfc2616_headers
       int
      HTTP yanıt kodu gönderilirken hangi başlık türlerinin kullanılacağını belirler. 0 atanırsa PHP, Apache ve diğer HTTP sunucuları tarafından desteklenen bir » RFC 3875 Status: başlığı gönderir. 1 atanırsa PHP, » RFC 2616 uyumlu başlıklar gönderir.
Bu seçenek etkinse ve PHP'yi bir CGI ortamında kullanıyorsanız (PHP-FPM gibi), standard RFC 2616 tarzı HTTP durum yanıt başlıklarını değil, onların RFC 3875 eşdeğerlerini kullanmalısınız. Örneğin header("HTTP/1.0 404 Not found"); değil, header("Status: 404 Not Found"); kullanmalısınız.
Ne yapıldığı hakkında bir fikriniz yoksa bu yönergeyi 0 değeriyle bırakın.
fastcgi.impersonate
       string
      IIS (WINNT temelli sistemlerde) altında FastCGI, çağrı yapan istemcinin güvenlik dizgeciklerinin taklit edilmesi yeteneğini destekler. Bu, IIS'ye isteğin altında çalıştığı güvenlik bağlamını tanımlama izni verir. Apache'nin mod_fastcgi modülü bu özelliği desteklemez (17-03-2002). IIS altında çalışılıyorsa yönergeye 1 atayın. Öntanımlı değer sıfırdır.
fastcgi.logging
       bool
      Turns on SAPI logging when using FastCGI kullanırken SAPI oturum açma etkin olur ve bu öntanımlı durumdur.
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi | 
|---|---|---|---|
| file_uploads | "1" | INI_SYSTEM | |
| upload_tmp_dir | NULL | INI_SYSTEM | |
| max_input_nesting_level | 64 | INI_PERDIR | |
| max_input_vars | 1000 | INI_PERDIR | |
| upload_max_filesize | "2M" | INI_PERDIR | |
| max_file_uploads | 20 | INI_PERDIR | 
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
file_uploads
       bool
      HTTP üzerinden karşıya dosya yüklemeye izin verilip verilmeyeceğini belirler. Ayrıca, upload_max_filesize, upload_tmp_dir ve post_max_size yönergelerine de bakınız.
upload_tmp_dir
       string
      Karşıya dosya yüklenirken dosyaların geçici olarak saklanacağı dizin. Dizinin, PHP'yi çalıştıran kullanıcı tarafından yazılabilir olması gerekir. Bir dizin belirtilmezse PHP sistem öntanımlısını kullanır.
upload_max_filesize
       int
      Karşıya yüklenecek dosyalar için azami boyut.
post_max_size bu değerden büyük olmalıdır.
int türünde bir değer kullanıldığında değer baytların sayısıdır. Büyük bayt değerleri için kullanılabilecek birimlerin gösterimleri hakkında bilgiyi bu SSS altında bulabilirsiniz.max_file_uploads
       int
      Aynı anda karşıya yüklenebilecek azami dosya sayısı. Gönderim sırasında boş bırakılan yükleme alanları bu sınıra dahil değildir.
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi | 
|---|---|---|---|
| sql.safe_mode | "0" | INI_SYSTEM | PHP 7.2.0'da kaldırıldı. | 
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
sql.safe_mode
       bool
      On değeri atandığında, öntanımlı değerler belirtilmiş veritabanı bağlantı işlevleri kullanıcı tarafından sağlanan bağımsız değişkenlerin yerine bu değerleri kullanacaktır. Öntanımlı değerlerin neler olduğunu görmek için ilgili veritabanının bağlantı işlevleri belgelerine bakınız.
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi | 
|---|---|---|---|
| windows.show_crt_warning | "0" | INI_ALL | 
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
windows.show_crt_warning
       bool
      Etkin olduğunda Windows CRT uyarılarını gösterir.
Bu özellik PHP 7.2.0'da KALDIRILDI.
https://haydenjames.io/understanding-php-memory_limit/ explains the memory_limit setting nicely.Be careful while using auto_prepend_file.
When the custom exception handler, set by set_exception_handler(), handles an uncaught exception, it interrupts the execution of every script.
If the script with the unhandled exception has been automatically prepended or included by an automatically prepended script, however, the main script will continue running anyway.
This could cause several issues: when we think that throwing an exception would automatically interrupt the current application, a whole chunk of code is going to run anyway.This might help in case someone happens to maintain old applications with a charset other than utf-8.
According to the docs, you can override the default charset if you use `header()`.
Suppose php.ini sets the default_charset to "UTF-8", but you need a legacy charset, like ISO-8859-1.
Still,
<?php header('Content-Type: text/html; Charset=ISO-8859-1'); ?>
would not override the charset, just add it as well and the result
was a response header like (note the two charsets):
    Content-Type:"text/html; Charset=ISO-8859-1;charset=UTF-8"
I found it strange the default one as `charset` with a lowercase `c`
as opposed to my custom charset with an uppercase `C`.
What solved was to _override_ the charset using all lowercase letters
as well for the word “charset”:
<?php header('content-type: text/html; charset=ISO-8859-1'); ?>
Then, the double charset from the response headers disappeared, and only the single, custom charset remained.Note regarding the upload_tmp_dir setting and UNC Paths:
When using PHP on Windows OS and IIS FastCGI, if you need to use a UNC path to a folder on a network drive for the upload_tmp_dir setting then you must use three \ characters at the front of the UNC path. 
Windows and PHP use the first slash as an escape character, so if you only use two slashes then it passes a UNC path with just one backslash. That is not valid for UNC paths and you many experience problems when uploading files, such as errors saying that "PHP is missing a temporary folder".
Correct:
upload_tmp_dir = "\\\path\to\your\folder"
Incorrect:
upload_tmp_dir = "\\path\to\your\folder""If the size of post data is greater than post_max_size..."
It seems that a more elegant way is comparison between post_max_size and $_SERVER['CONTENT_LENGTH']. Please note that the latter includes not only size of uploaded file plus post data but also multipart sequences. Leoyou get a misleading error if a directory doesn't exist or the user lacks permission to access it.
open_basedir restriction in effect. File(/tmp/php_session) is not within the allowed path(s): /tmp/php_sessionIf you use Microsoft IIS Windows and want to use open_basedir restrictions with multiple dirs you have to set them into single quotes in the main config xml file of IIS (C:\Windows\System32\inetsrv\config\applicationHost.config). Works fine in IIS 10.
Multiple files with single quotes and ; for windows:
"C:\php\php-cgi.exe|-d open_basedir='C:\Windows\Temp\;D:\mywebsite1\'"
Only one dir works fine without single quotes:
"C:\php\php-cgi.exe|-d open_basedir=D:\mywebsite1\"
In my main config xml file of IIS there are 2 nodes to set per website and the definitions have to be equal:
configuration\Location\system.webServer\handlers\add
configuration\system.webServer\fastCgi