auto_globals_jit setting is also affecting $_REQUEST superglobal in 5.3 It is not explicitly stated in documentation.
php.ini yönergelerinin tanımları
Bu liste PHP kurulumunuzu yapılandırmakta kullanacağınız yerleşik php.ini yönergelerini içerir. Eklentilerle ilgili yönergeler eklentinin kendi belgelerinde listelenmiş ve açıklanmışladır. Örneğin, oturum yönergeleri ile ilgili bilgileri oturumlar sayfasında bulabilirsiniz.
Httpd Options
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi |
|---|---|---|---|
| async_send | "0" | PHP_INI_ALL |
Dil Seçenekleri
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi |
|---|---|---|---|
| short_open_tag | "1" | PHP_INI_ALL | PHP 4.0.0'da PHP_INI_ALL. PHP < 5.3.0'da PHP_INI_PERDIR |
| asp_tags | "0" | PHP_INI_PERDIR | PHP 4.0.0'da PHP_INI_ALL. |
| precision | "14" | PHP_INI_ALL | |
| y2k_compliance | "1" | PHP_INI_ALL | |
| allow_call_time_pass_reference | "1" | PHP_INI_PERDIR | PHP 4.0.0'da PHP_INI_ALL. |
| disable_functions | "" | sadece php.ini | PHP 4.0.1 ve sonrasında mevcuttur. |
| disable_classes | "" | sadece php.ini | PHP 4.3.2 ve sonrasında mevcuttur. |
| expose_php | "1" | sadece php.ini | |
| zend.ze1_compatibility_mode | "0" | PHP_INI_ALL | PHP 5.0.0 ve sonrasında mevcuttur. PHP 5.3.0'da kaldırıldı. |
| detect_unicode | "1" | PHP_INI_ALL | PHP 5.1.0 ve sonrasında mevcuttur. Bu kullanımı önerilmeyen özellik gelecekte kesinlikle KALDIRILACAKTIR. |
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
-
short_open_tagboolean -
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 ayrıca,
<? echo'ya eşdeğer olan<?=kısaltmasını da etkiler. Bu kısaltmayı kullanabilmek içinshort_open_tagyönergesinin değeri 1 olmalıdır. - Normal <?php ?> etiketlerine ek olarak ASP tarzı <% %> etiketlerinin kullanımını etkin kılar. Bu yönerge, değişken değerli yazdırma kısaltmasını da (<%= $değer %>) etkiler. Daha ayrıntılı bilgi için HTML'den Kaçmak bölümüne bakınız.
-
precisioninteger - Gerçek sayılarda ondalık noktadan sonraki anlamlı hane sayısı.
-
y2k_complianceboolean - 2000 yılı uyumluluğunu uygular (uyumsuz tarayıcılarda sorun çıkarır)
-
allow_call_time_pass_referenceboolean -
İşlev çağrısı sırasında değiştirgeler gönderimli aktarıldığında uyarı verilip verilmeyeceğini belirler. Bu yöntemin kullanımı Hangi değiştirgelerin gönderimli aktarılacağını işlev bildiriminde belirtmek daha iyidir. Bunu yapıp, betiğinizin, dilin gelecekteki sürümlerinde de düzgün çalışabilmesi için bu yönergeye sıfır atamanız önerilir (yoksa bu özelliği her kullanışınızda bir uyarı alırsınız).
İşlev çağrısı sırasında değiştirgelerin gönderimli aktarımı kodun temizliği açısından önerilmemektedir. Eğer işlev bildiriminde değiştirgenin gönderimli aktarılacağı belirtilmemişse işlev değiştirgesini bilgi vermeden değiştirebilir. Bu yan etkilerden kaçınmak için hangi değiştirgenin gönderimli aktarılacağının sadece işlev bildiriminde belirtilmesi daha iyidir.
PHP5'te, allow_call_time_pass_reference yönergesinin kullanımı önerilmemektedir, PHP 5.3.0'dan önceki sürümlerde kullanımı bir
E_COMPILE_WARNINGuyarısı çıktılanmasına, PHP 5.3.0 ve sonrasında ise birE_DEPRECATEDçıktılanmasına sebep olur. Bu yönerge PHP6'da kaldırılmıştır.Ayrıca bakınız: Gönderimlerle İlgili Herşey.
-
expose_phpboolean -
PHP'nin kurulu olduğu sunucuda (imzasını HTTP sunucusunun başlığına eklemek suretiyle) kendini karşıya gösterip göstermeyeceğini belirler. Bu güvenlikle ilgili bir konu değildir, tamamen sunucunuzda PHP kullanıp kullanmayacağınızla ilgilidir.
-
disable_functionsstring - Bu yönerge güvenlik ile ilgili sebeplerle belli işlevleri iptal etmeye yarar. İşlev isimleri aralarına virgül konarak belirtilir. Bu yönerge güvenli kipte etkili değildir. Bu yönerge sadece php.ini içinde atanabilir. Örneğin httpd.conf dosyasında tanımlayamazsınız.
-
disable_classesstring -
Bu yönerge güvenlik ile ilgili
sebeplerle belli sınıfları iptal etmeye yarar. Sınıf isimleri
aralarına virgül konarak belirtilir. Bu yönerge güvenli kipte etkili değildir.
Bu yönerge sadece php.ini içinde atanabilir. Örneğin httpd.conf
dosyasında tanımlayamazsınız.
Bilginize: Kullanılabilirlik bilgisi
Bu yönerge PHP 4.3.2'dan itibaren kullanılabilir. -
zend.ze1_compatibility_modeboolean -
Zend Motoru 1 ile uyumluluk kipini etkin kılar (PHP 4). Nesne kopyalama, tür çarpıtma (özellikleri olmayan nesnelerin türü
FALSEveya 0 olarak çarpıtılır) ve nesne karşılaştırmayı etkiler. Bu kipte nesneler öntanımlı olan gönderimle değil değerleriyle aktarılırlar.Ayrıca bakınız: PHP 4'ten PHP 5'e yükseltme.
UyarıBu özelliğin kullanımı artık ÖNERİLMEMEKTE olup PHP 5.3.0 itibariyle özellik KALDIRILMIŞTIR.
-
detect_unicodeboolean -
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.
Özkaynak Sınırları
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi |
|---|---|---|---|
| memory_limit | "128M" | PHP_INI_ALL | PHP 5.2.0 öncesi "8M", PHP 5.2.0'da "16M" |
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
-
memory_limitinteger -
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.
PHP 5.2.1 öncesinde, bu yönergeyi kullanabilmek için PHP'yi derlerken --enable-memory-limit yapılandırma seçeneğini kullanmak gerekirdi. 5.2.1 öncesinde bu derleme seçeneği ayrıca, memory_get_usage() ve memory_get_peak_usage() işlevlerinin de tanımlanmasını gerektirirdi.
integer 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.
Ayrıca bakınız: max_execution_time.
Başarım Arttırma
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi |
|---|---|---|---|
| realpath_cache_size | "16K" | PHP_INI_SYSTEM | PHP 5.1.0 ve sonrasında mevcuttur. |
| realpath_cache_ttl | "120" | PHP_INI_SYSTEM | PHP 5.1.0 ve sonrasında mevcuttur. |
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
-
realpath_cache_sizeinteger -
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.
-
realpath_cache_ttlinteger -
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.
Veri İşleme
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi |
|---|---|---|---|
| track_vars | "On" | PHP_INI_?? | |
| arg_separator.output | "&" | PHP_INI_ALL | PHP 4.0.5 ve sonrasında mevcuttur. |
| arg_separator.input | "&" | PHP_INI_PERDIR | PHP 4.0.5 ve sonrasında mevcuttur. |
| variables_order | "EGPCS" | PHP_INI_PERDIR | PHP <= 5.0.5'te PHP_INI_ALL. |
| request_order | "" | PHP_INI_SYSTEM|PHP_INI_PERDIR | PHP 5.3.0 ve sonrasında mevcuttur. |
| auto_globals_jit | "1" | PHP_INI_PERDIR | PHP 5.0.0 ve sonrasında mevcuttur. |
| register_globals | "0" | PHP_INI_PERDIR | PHP <= 4.2.3'te PHP_INI_ALL. |
| register_argc_argv | "1" | PHP_INI_PERDIR | PHP <= 4.2.3'te PHP_INI_ALL. |
| register_long_arrays | "1" | PHP_INI_PERDIR | PHP 5.0.0 ve sonrasında mevcuttur. PHP 5.3.0'dan itibaren kullanımı önerilmemektedir. Bu kullanımı önerilmeyen özellik gelecekte kesinlikle KALDIRILACAKTIR. |
| post_max_size | "8M" | PHP_INI_PERDIR | PHP <= 4.2.3'te PHP_INI_SYSTEM. PHP 4.0.3 ve sonrasında mevcuttur. |
| gpc_order | "GPC" | PHP_INI_ALL | |
| auto_prepend_file | NULL | PHP_INI_PERDIR | PHP <= 4.2.3'te PHP_INI_ALL. |
| auto_append_file | NULL | PHP_INI_PERDIR | PHP <= 4.2.3'te PHP_INI_ALL. |
| default_mimetype | "text/html" | PHP_INI_ALL | |
| default_charset | "" | PHP_INI_ALL | |
| always_populate_raw_post_data | "0" | PHP_INI_PERDIR | PHP <= 4.2.3'te PHP_INI_ALL. PHP 4.1.0 ve sonrasında mevcuttur. |
| allow_webdav_methods | "0" | PHP_INI_PERDIR |
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
-
track_varsboolean -
Etkin kılınırsa Ortam, GET, POST, Çerez ve Sunucu değişkenleri $_ENV, $_GET, $_POST, $_COOKIE ve $_SERVER küresel ilişkisel dizilerinde bulunabilir.
PHP 4.0.3 ve sonrasında,
track_varsdaimaondeğerine sahiptir. -
arg_separator.outputstring -
PHP'de üretilen URL'leri değiştirgelerine ayırmak için kullanılan ayraç.
-
arg_separator.inputstring -
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_orderstring -
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.
Kullanımı önerilmeyen register_globals yönergesine 1 atanırsa
variables_orderyönergesi ayrıca, küresel etki alanındaki ENV, GET, POST, COOKIE ve SERVER değişkenlerinin sırasını da belirler. Örneğinvariables_orderyönergesine "EGPCS" atanır,register_globalsetkinleştirilir ve hem $_GET['action'] hem de $_POST['action'] atanırsa, $action değişkeni $_POST['action'] değerini içerecektir; bunun sebebi örnek yönergemizde P'nin G'den sonra gelmesidir.Uyarı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_orderstring -
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_jitboolean -
Etkinleştirildiğinde, SERVER 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.
register_globals, register_long_arrays, ve register_argc_argv PHP yönergeleri, bu yönergenin etkili olabilmesi için etkinleştirilmemelidir. PHP 5.1.3 ve sonrasında register_argc_argv'nin etkisiz kılınmasına gerek yoktur.
UyarıSERVER 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_globalsboolean -
EGPCS (Environment, GET, POST, Cookie, Server) değişkenlerinin küresel değişkenler haline getirilip getirilmeyeceklerini belirler.
» PHP 4.2.0 ve sonrasında, bu yönergenin öntanımlı değeri
off'tur.Daha fazla bilgi için
register_globalskullanımı adlı güvenlik bölümünü okuyunuz.register_globalsyönergesine çalışma anında (ini_set() ile) değer atanamayacağına dikkat ediniz. Yine de, yukarıda açıklandığı gibi konağınız izin veriyorsa .htaccess kullanabilirsiniz. Örnek .htaccess girdisi:php_flag register_globals off.Bilginize:
register_globalsyönergesi variables_order yönergesinden etkilenir.UyarıBu özelliğin kullanımı PHP 5.3.0'dan beri ÖNERİLMEMEKTEDİR ve PHP 6.0.0'da tamamen KALDIRILMIŞTIR. Bu özelliğe kesinlikle güvenmemelisiniz.
-
register_argc_argvboolean - PHP'nin, (GET bilgisini içeren) argv ve argc değişkenlerini bildirip bildirmeyeceğini belirler. Komut satırı bölümüne de bakınız. Bu yönerge PHP 4.0.0'dan itibaren kullanılabilir hale geldi ve daha önce değeri daima "on" idi.
-
register_long_arraysboolean -
PHP'nin kullanımı artık önerilmeyen $HTTP_*_VARS
türü uzun önceden
tanımlanmış değişkenleri yazmaç haline getirip
getirmeyeceğini belirler. Değeri
onolduğunda (öntanımlıdır), $HTTP_GET_VARS gibi uzun önceden tanımlanmış değişkenler tanımlanacaktır. Bunları kullanmayacaksanız başarımı arttırmak için etkisiz kılmanızı öneririz. Bunların yerine $_GET gibi süper küresel dizileri kullanmak daha iyidir. like $_GET. Bu yönerge PHP 5.0.0'da kullanılabilir hale gelmiştir.UyarıBu özelliğin kullanımı PHP 5.3.0'dan beri ÖNERİLMEMEKTEDİR ve PHP 6.0.0'da tamamen KALDIRILMIŞTIR. Bu özelliğe kesinlikle güvenmemelisiniz.
-
post_max_sizeinteger -
POST verisinin azami boyutunu belirler. Bu ayar ayrıca karşıya dosya
yükleme işlemlerini de etkiler. Büyük dosyaları karşıya yüklemek
için bu değerin upload_max_filesize değerinden büyük olması gerekir.
Bellek sınırlama yapılandırma betiğinde etkin kılınmışsa, memory_limit yönergesi de karşıya
dosya yüklemeyi etkiler. Genelde, memory_limit değerinin
post_max_sizedeğerinden büyük olması gerekir. integer 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 boyupost_max_sizedeğ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 bit 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ü özdevinimli 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.
-
gpc_orderstring -
GET/POST/COOKIE değişken çözümleme sırasını belirler. Yönergenin öntanımlı değeri "GPC"'dir. Örneğin "GP" değerini atamak, PHP'nin çerezleri tamamen yoksaymasına sebep olacak ve GET yönteminin değişkenleri aynı isimdeki POST yönteminin değişkenlerinin üzerine yazacaktır.
Bilginize:
Bu yönerge PHP 4'te yoktur. Yerine variables_order yöregesini kullanın.
-
auto_prepend_filestring -
Özdevinimli 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_filestring -
Özdevinimli 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 özdevinimli ekleme gerçekleşmez.
-
default_mimetypestring -
Öntanımlı MIME türü.
-
default_charsetstring -
PHP, Content-type: başlığında öntanımlı olarak bir karakter kodlaması çıktılar. Karakter kümesi gönderimini iptal etmek için yönergeye boş dizge ("") atamak yeterlidir.
-
always_populate_raw_post_databoolean -
$HTTP_RAW_POST_DATA değişkeni daima ham POST verisi içerilerek oluşturulur. Aksi takdirde, veri sadece tanınmayan MIME türünde oluşturulur. Bununla birlikte, ham POST verisine erişmek için tercih edilen yol php://input'tur. $HTTP_RAW_POST_DATA, enctype="multipart/form-data" ile kullanılamaz.
-
allow_webdav_methodsboolean -
WebDAV http isteklerinin PHP betikleri içinde elde edilmesine izin verir (PROPFIND, PROPPATCH, MOVE, COPY, vs.). Bu yönerge PHP 4.3.2'de kullanımdan kaldırılmıştır. POST verisini bu isteklerden almak isterseniz always_populate_raw_post_data yönergesini de etkin kılmalısınız.
Ayrıca bakınız: magic_quotes_gpc, magic_quotes_runtime ve magic_quotes_sybase.
Dosya Yolları ve Dizinler
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi |
|---|---|---|---|
| include_path | ".;/path/to/php/pear" | PHP_INI_ALL | |
| open_basedir | NULL | PHP_INI_ALL | PHP < 5.3.0'da PHP_INI_SYSTEM. |
| doc_root | NULL | PHP_INI_SYSTEM | |
| user_dir | NULL | PHP_INI_SYSTEM | |
| extension_dir | "/path/to/php" | PHP_INI_SYSTEM | |
| extension | NULL | sadece php.ini | |
| zend_extension | NULL | sadece php.ini | |
| zend_extension_debug | NULL | sadece php.ini | |
| zend_extension_debug_ts | NULL | sadece php.ini | |
| zend_extension_ts | NULL | sadece php.ini | |
| cgi.check_shebang_line | "1" | PHP_INI_SYSTEM | PHP 5.2.0 ve sonrasında mevcuttur. |
| cgi.fix_pathinfo | "1" | PHP_INI_SYSTEM | PHP 4.3.0 ve sonrasında mevcuttur. PHP 5.2.1 öncesinde PHP_INI_ALL. |
| cgi.force_redirect | "1" | PHP_INI_SYSTEM | PHP 4.2.0 ve sonrasında mevcuttur. PHP 5.2.1 öncesinde PHP_INI_ALL. |
| cgi.redirect_status_env | NULL | PHP_INI_SYSTEM | PHP 4.2.0 ve sonrasında mevcuttur. PHP 5.2.1 öncesinde PHP_INI_ALL. |
| fastcgi.impersonate | "0" | PHP_INI_SYSTEM | PHP 4.3.0 ve sonrasında mevcuttur. PHP 5.2.1 öncesinde PHP_INI_ALL. |
| fastcgi.logging | "1" | PHP_INI_SYSTEM | PHP 4.3.0 ve sonrasında mevcuttur. PHP 5.2.1 öncesinde PHP_INI_ALL. |
| cgi.rfc2616_headers | "0" | PHP_INI_ALL | PHP 4.3.0 ve sonrasında mevcuttur. |
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
-
include_pathstring -
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_pathiçindeki yollarda her dosya için tek tek sırayla arar. Önce ilk yola bakar, sonra diğerine, böyle gider. Dosyayı bulursa döner, bulamazsa bir uyarı veya bir hata verir. 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.
-
open_basedirstring -
PHP tarafından açılmış dosyaları, dosyanın kendisi de dahil olmak üzere belirtilen dizin ağacı ile sınırlar. Bu yönerge güvenli kipin etkin olup olmamasından etkilenmez.
Örneğin bir betik, 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.
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 özdevinimli olarak miras alınmaktadır.
open_basedir ile belirtilen yollar birer dizin ismi olarak değil önek olarak kullanılır. Örneğin "open_basedir = /dir/incl" ile (mevcut oldukları takdirde) "/dir/incls" dizinlerine erişime izin verilir. Belli bir dizine erişimi kısıtlamak istiyorsanız yolun sonuna bir bölü çizgisi ekleyin. Örnek: open_basedir = /dir/incl/
Öntanımlı olarak bütün dosyaların açılmasına izin verilir.
Bilginize:
PHP 5.3.0'dan itibaren open_basedir çalışma anında daha da kısıtlayıcı hale getirilebilmektedir. Örneğin, php.ini içinde open_basedir yö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.
-
doc_rootstring -
PHP'nin sunucu üzerindeki kök dizini. Sadece boş olmadığı takdirde kullanılır. PHP
safe_modeile yapılandırılmışsa, Bu dizin dışındaki dosyalar sunulmaz. PHP, FORCE_REDIRECT ile derlenmişse, PHP'yi HTTP sunucusu altında bir CGI olarak çalıştırıyorsanızdoc_rootyönergesini atamanız gerekir (IIS hariç). Bunun yerine aşağıdaki cgi.force_redirect yapılandırması da kullanılabilir. -
user_dirstring -
Kullanıcının ev dizininde PHP dosyalarının bulunduğu ana dizin. Örnek: public_html.
-
extension_dirstring -
PHP'nin devingen olarak yüklenebilen eklentileri arayacağı dizin. Ayrıca bakınız: enable_dl ve dl().
-
extensionstring -
PHP başlatılırken devingen olarak yüklenecek eklentiler.
-
zend_extensionstring -
PHP başlatılırken yüklenecek devingen olarak yüklenebilen Zend eklentisinin mutlak yolu (örneğin: APD).
-
zend_extension_debugstring -
Hata ayıklama bilgisi ile derlenmiş eklentiler için zend_extension yerine bu yönerge kullanılır.
-
zend_extension_debug_tsstring -
Evre güvenliği ve hata ayıklama bilgisi ile derlenmiş eklentiler için zend_extension yerine bu yönerge kullanılır.
-
zend_extension_tsstring -
Evre güvenliği ile derlenmiş eklentiler için zend_extension yerine bu yönerge kullanılır.
-
cgi.check_shebang_lineboolean -
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.fix_pathinfoboolean -
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_redirectboolean -
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.redirect_status_envstring -
cgi.force_redirectyö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.
-
fastcgi.impersonatestring -
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.loggingboolean -
Turns on SAPI logging when using FastCGI kullanırken SAPI oturum açma etkin olur ve bu öntanımlı durumdur.
-
cgi.rfc2616_headersint -
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 Status: başlığı gönderir. 1 atanırsa PHP, » RFC 2616 uyumlu başlıklar gönderir. Ne yapıldığı hakkında bir fikriniz yoksa bu yönergeyi 0 değeriyle bırakın.
Karşıya Dosya Yükleme
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi |
|---|---|---|---|
| file_uploads | "1" | PHP_INI_SYSTEM | PHP <= 4.2.3'te PHP_INI_ALL. PHP 4.0.3 ve sonrasında mevcuttur. |
| upload_tmp_dir | NULL | PHP_INI_SYSTEM | |
| upload_max_filesize | "2M" | PHP_INI_PERDIR | PHP <= 4.2.3'te PHP_INI_ALL. |
| max_file_uploads | 20 | PHP_INI_SYSTEM | PHP 5.2.12'den beri kullanılabilmektedir. |
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
-
file_uploadsboolean -
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.
integer 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. -
upload_tmp_dirstring -
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_filesizeinteger -
Karşıya yüklenecek dosyalar için azami boyut.
integer 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_uploadsinteger -
Aynı anda karşıya yüklenebilecek azami dosya sayısı.
Genel SQL
| İsim | Öntanımlı | Değişlik Yeri | Sürüm Bilgisi |
|---|---|---|---|
| sql.safe_mode | "0" | PHP_INI_SYSTEM |
Yapılandırma yönergelerinin kısa açıklamalarını aşağıda bulabilirsiniz.
-
sql.safe_modeboolean -
On değeri atandığında, öntanımlı değerler belirtilmiş veritabanı bağlantı işlevleri sağlanan değiştirgelerin 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.
Adding multiple directories to open_basedir:
open_basedir = "/var/www/htdocs/:/var/www/tmp/" adds both paths /var/www/htdocs/ and /var/www/tmp/. Do not forget the trailing slash, otherwise the last directory will be considered as a prefix (< 5.3.4).
On Windows you use ; as the seperator.
If you need to use a path in your include_path that has a space in it - I found that I could make it work (in windows anyway) by setting a path like this
L:\Information Technology\Resources\lib\
in the include path like this listed below
include_path = ".;L:\Information" " Technology\Resources\lib\"
Note that there is no way to disable eval() work by using disable_functions directive, because eval() is a language construct and not a function.
Many people advise to disable such potentially-insecure functions like system(), exec(), passthru(), eval() and so on in php.ini when not running in safe mode, but eval() would still work even it listed in disable_functions.
This is a possible solution for a problem which seems to be a php-ini-problem but is not.
If a $_POST is used with large fields e.g. textarea's with more than 120kb characters php returns a blank screen, even if the max_post_size is 8M.
This problem may be caused by an apache-module SecFilter.
Adding the following lines to the .htaccess solves the problem.
SecFilterEngine Off
SecFilterScanPOST Off
I know this is not a php-issue, but i'm still posting it here since it looks like it is a php-problem and I did not find any sites or forums offering this solution.
Amusingly, the include_path logically includes the current directory of the running file as the last entry all the time anyways, so part of the business about shoving "." into the include_path is spurious -- it's "there" on the end all the time, at least in the 5.2.12 source (see main/fopen_wrappers.c around line 503).
This one had me goin' for a while.
For 'short_open_tag',
though it is marked as PHP_INI_ALL in changable column,
you should note the CHANGE_LOG column also:
PHP_INI_ALL in PHP <= 4.0.0.
PHP_INI_PERDIR in PHP < 5.3.0
So as of 4.0, it will not work if you wanna use
ini_set('short_open_tag') to change it's value on the fly.
Note that on some Unix systems (i.e. PHP 5.1.6 on Centos 5.2) include_path in php.ini should NOT be quoted.
For example, instead of
include_path='.:/usr/share/php'
use
include_path=.:/usr/share/php
Using quotes does not cause any error message, but all of your require_once() directives will fail (indicating that file could not be opened) - unless full path to target file is provided.
When display_errors is off, PHP will send an HTTP 500 result header on a fatal error. This is usefull when working with AJAX applications.
A handy trick to pick up parse errors in test_file.php if you can't set display_errors in php.ini or use .htaccess:
<?php
error_reporting (E_ALL);
ini_set ('display_errors', true);
include('./test_file.php');
?>
"post_max_size"
"[..]This can be tracked in various ways, e.g. by passing the $_GET variable to the script processing the data, i.e. <form action="edit.php?processed=1">, and then checking if $_GET['processed'] is set."
using PHP 4.4.8 it seems that only the $_POST array will be empty in case of the file is largen than post_max_size.
so above mentioned method does not work in my case.
i need to use $_POST['processed'] instead of $_GET['processed']
If you are having trouble getting the auto_prepend_file to work with the command line interface make sure that you have set it in the cli specific php.ini and that the read permission is set correctly for that php.ini file.
If you want to display the upload limit without knowing the server configuration, this may be useful:
<?php
function let_to_num($v){ //This function transforms the php.ini notation for numbers (like '2M') to an integer (2*1024*1024 in this case)
$l = substr($v, -1);
$ret = substr($v, 0, -1);
switch(strtoupper($l)){
case 'P':
$ret *= 1024;
case 'T':
$ret *= 1024;
case 'G':
$ret *= 1024;
case 'M':
$ret *= 1024;
case 'K':
$ret *= 1024;
break;
}
return $ret;
}
$max_upload_size = min(let_to_num(ini_get('post_max_size')), let_to_num(ini_get('upload_max_filesize')));
echo "Maximum upload file size is ".($max_upload_size/(1024*1024))."MB.";
?>
Do note however that this limit is not completely reliable; there are other factors which need to be taken into account, such as any other $_POST data and their size, the memory limit, and the script time limit. This does, however, give some rough limit, and helps you avoid "Doh!" problems where you can't figure out why your file won't upload. :)
While the manual says that the file specified by auto_prepend_file is included as if it were called by include(), in fact the file is included as if it were called by require().
In other words, if PHP cannot find the file that you specify with auto_prepend_file, it will throw a fatal error.
register_long_arrays has a very odd behavior (at least in PHP 5.2):
With register_long_arrays=Off the $GLOBALS array will not contain [_SERVER] and [_REQUEST]. They are accessible as superglobals ($_SERVER, $_REQUEST), but they disappear from the $GLOBALS array!
to make sure that all requests use SSL you can use this in a file that is set for auto_prepend_file. This ensures that all requests are SSL
<?php
if(empty($_SERVER['HTTPS']) || strtolower($_SERVER['HTTPS']) != 'on' )
header("Location: https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}") and exit();
?>
I wish the documentation was more clear as to whether the arg_separator.output character is automatically encoded when PHP outputs it. In other words, is "&" valid or do I need to specify the encoded character "&"? It would make sense to specify only "&" and hope that it is encoded as needed. That way the value could be read by other functions and encoded only when output to HTML, rather than having to test whether it is already encoded and decode it when necessary (for header redirection for example)
"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. Leo
Starting with PHP 4.4.0 (at least PHP version 4.3.10 did have old, documented behaviour) interpretation of value of "session.save_path" did change in conjunction with "save_mode" and "open_basedir" enabled.
Documented ( http://de.php.net/manual/en/ref.session.php#ini.session.save-path ):
Values of "session.save_path" should or may be **without** ending slash.
For instance:
<?php
// Valid only *before* PHP 4.4.0:
ini_set( "session.save_path", "/var/httpd/kunde/phptmp" );
?> will mean:
The directory "/var/httpd/kunde/phptmp/" will be used to write data and therefore must be writable by the web server.
Starting with PHP 4.4.0 the server complains that "/var/httpd/kunde/" is not writable.
Solution: Add an ending slash in call of ini_set (or probably whereever you set "session.save_path"), e.g.:
<?php
// Note the slash on ".....phptmp/":
ini_set( "session.save_path", "/var/httpd/kunde/phptmp/" );
?>
Hope, that does help someone.
Warning, if you change upload_max_filesize, please note that both post_max_size and memory_limit directives may have to change too.
I did a little experimentation on the behaviour of auto_prepend_file as the order of access wasn't clear to me from the documentation.
1. Apache checks to see if the target file exists.
2. The prepend file is called
3. The target file is called
This means that you can use auto_prepend_file to change the target file before you access it however you can't generate new files.
Please be mindful, that if you plan on re-configuring / recompiling to add --enable-memory-limit support, you may need to run a 'make clean' before you run 'make'. Otherwise, you may end up with a phpinfo() that shows up with --enable-memory-limit as a configure parameter, but the memory_get_usage() function will still force a fatal error.
