kghbln Thank you very much you really help me with this mate ! I just start my Hosting Company and i need to protect server from web shells like: c100.php and many other but i also need phpmyadmin , Wordpress and many other script to install for my customers but with base_dir on that isn't possible, this is really help me , now i know i can allow specific multiple directories and restrict-protect everything else !
Thank you
Descrierea directivelor de bază ale php.ini
Această listă include directivele de bază ale php.ini, pe care le puteți stabili pentru a configura PHP. Directivele ce se referă la extensii sunt listate și detaliate pe paginile de documentare ale extensiilor respective. Informații despre directivele de sesiune, spre exemplu, pot fi găsite pe pagina de sesiuni.
Opțiunile Httpd
| Denumirea | Valoarea implicită | Poate fi schimbată în | Istoria schimbărilor |
|---|---|---|---|
| async_send | "0" | PHP_INI_ALL |
Opțiunile limbajului
| Denumirea | Valoarea implicită | Poate fi schimbată în | Istoria schimbărilor |
|---|---|---|---|
| short_open_tag | "1" | PHP_INI_ALL | PHP_INI_ALL în PHP 4.0.0. PHP_INI_PERDIR în PHP < 5.3.0. |
| asp_tags | "0" | PHP_INI_PERDIR | PHP_INI_ALL în PHP 4.0.0. |
| precision | "14" | PHP_INI_ALL | |
| y2k_compliance | "1" | PHP_INI_ALL | |
| allow_call_time_pass_reference | "1" | PHP_INI_PERDIR | PHP_INI_ALL în PHP 4.0.0. |
| disable_functions | "" | numai în php.ini | Disponibil începând cu PHP 4.0.1. |
| disable_classes | "" | numai în php.ini | Disponibil începând cu PHP 4.3.2. |
| expose_php | "1" | numai în php.ini | |
| zend.ze1_compatibility_mode | "0" | PHP_INI_ALL | Disponibil începând cu PHP 5.0.0. Eliminat în PHP 5.3.0. |
| detect_unicode | "1" | PHP_INI_ALL | Disponibil începând cu PHP 5.1.0. Această facilitate dezaprobată cu siguranță va fi eliminată în viitor. |
Iată o explicație pe scurt a directivelor de configurare.
- short_open_tag boolean
-
Indică PHP dacă forma prescurtată (
<? ?>) a etichetei de deschidere a PHP este permisă. Dacă doriți să utilizați PHP în combinație cu XML, puteți dezactiva această opțiune pentru a utiliza<?xml ?>direct în text. În caz contrar, puteți să le tipăriți cu PHP, de exemplu:<?php echo '<?xml version="1.0"?>'; ?>. De asemenea, dacă este dezactivată, trebuie să utilizați forma lungă a etichetei de deschidere PHP (<?php ?>).Notă:
Această directivă de asemenea afectează scurtătura
<?=, care este identică cu<? echo. Utilizarea acestei scurtături necesită cashort_open_tagsă fie activată. - Permite utilizarea etichetelor de tip ASP <% %> în plus față de etichetele obișnuite <?php ?>. Aceasta include și scurtătura pentru tiparul valorii variabilei <%= $value %>. Pentru mai multe informații accesați Evadarea din HTML.
- precision integer
- Numărul cifrelor semnificative afișate în numerele cu virgulă flotantă.
- y2k_compliance boolean
- Forțează conformarea cu anul 2000 (va cauza probleme cu navigatoarele nonconformante)
- allow_call_time_pass_reference boolean
-
Afișarea avertizării în cazul când argumentele sunt transmise prin referință în timpul apelării funcției. Metoda încurajată de specificare a argumentelor ce trebuie transmise prin referință este în declarația funcției. Sunteți încurajat să încercați să dezactivați această opțiune și să aveți grijă ca scripturile să lucreze în mod normal cu ea, pentru a vă asigura că ele vor funcționa cu versiunile viitoare ale limbajului (veți primi o avertizare de fiecare dată când utilizați această facilitate).
Transmiterea argumentelor prin referință la momentul apelării funcției a fost descurajată din motivul curățeniei codului-sursă. O funcție poate să-și modifice argumentul într-un mod nedocumentat dacă nu a declarat că argumentul este transmis prin referință. Pentru a evita efecte secundare este mai bine de a specifica care argumente sunt transmise prin referință numai în declarația funcției.
În PHP5 allow_call_time_pass_reference este descurajată, în versiuni anterioare PHP 5.3.0 utilizarea acestei facilități va emite o avertizate E_COMPILE_WARNING, iar în PHP 5.3.0+ avertizarea a devenit o notificare E_DEPRECATED.
Accesați de asemenea explicația referințelor.
- expose_php boolean
-
Decide dacă PHP va expune sau nu faptul că este instalat pe server (de ex. prin adăugarea semnăturii sale la antetul Web server-ului). Nu este nici un fel de pericol de securitate, însă acest lucru permite de a determina dacă utilizați sau nu PHP pe server.
- disable_functions string
-
Această directivă vă permite să dezactivați anumite funcții din motive de securitate. Ea conține o listă a denumirilor funcțiilor, separate prin virgulă. disable_functions nu este afectată de Modul securizat.
Doar internal functions poate fi dezactivată utilizând această directivă. Funcțiile definite de utilizator nu sunt afectate.
Această directivă trebuie să fie stabilită în php.ini De exemplu nu puteți stabili aceasta în httpd.conf.
- disable_classes string
-
Această directivă vă permite să dezactivați anumite clase din motive
de securitate. Ea conține o listă a
denumirilor claselor, separate prin virgulă. disable_classes
nu este afectată de Modul securizat.
Această directivă trebuie să fie stabilită în php.ini De exemplu nu
puteți stabili aceasta în httpd.conf.
Notă: Notă despre disponibilitate
Această directivă a devenit disponibilă în PHP 4.3.2 - zend.ze1_compatibility_mode boolean
-
Activează modul de compatibilitate cu Zend Engine 1 (PHP 4). Aceasta afectează clonarea, transformarea (obiectele fără proprietăți se transformă în FALSE sau 0), și comparația obiectelor. În acest mod, obiectele sunt transmise prin valoare, dar nu prin referință, cum e stabilit implicit.
Accesați de asemenea secțiunea întitulată Migrarea de la PHP 4 la PHP 5.
AvertizareAceastă facilitate este ÎNVECHITĂ și ELIMINATĂ începând cu PHP 5.3.0.
- detect_unicode boolean
-
Verifică prezența BOM (Byte Order Mark) și dacă fișierul conține caractere multioctet valide. Această detectare este efectuată înaintea procesării __halt_compiler(). Este disponibilă doar în modul Zend Multibyte.
Limitele resurselor
| Denumirea | Valoarea implicită | Poate fi schimbată în | Istoria schimbărilor |
|---|---|---|---|
| memory_limit | "128M" | PHP_INI_ALL | "8M" înainte de PHP 5.2.0, "16M" în PHP 5.2.0 |
Iată o explicație pe scurt a directivelor de configurare.
- memory_limit integer
-
Aceata stabilește mărimea maximă a memoriei în baiți, pe care un script o poate aloca. Astfel se evită situația când scripturile scrise rău consumă toată memoria disponibilă pe server. Atrageți atenția că pentru a dezactiva limita de memorie, trebuie să stabiliți această directivă la valoarea -1.
Înainte de PHP 5.2.1, pentru a utiliza această directivă, ea trebuia să fi fost activată la momentul compilării indicând --enable-memory-limit în linia de configurare. Acest fanion indicat la momentul compilării era de asemenea necesar pentru a defini funcțiile memory_get_usage() și memory_get_peak_usage() anterior versiunii 5.2.1.
În cazul utilizării unui integer, valoarea este măsurată în octeți. De asemenea poate fi utilizată notația prescurtată, după cum este descris în acest FAQ.
Accesați de asemenea: max_execution_time.
Reglarea performanței
| Denumirea | Valoarea implicită | Poate fi schimbată în | Istoria schimbărilor |
|---|---|---|---|
| realpath_cache_size | "16K" | PHP_INI_SYSTEM | Disponibil începând cu PHP 5.1.0. |
| realpath_cache_ttl | "120" | PHP_INI_SYSTEM | Disponibil începând cu PHP 5.1.0. |
Iată o explicație pe scurt a directivelor de configurare.
- realpath_cache_size integer
-
Determină mărimea cache-ului căilor folosite de PHP. Această valoare trebuie mărită pe sistemele unde PHP deschide multe fișiere, pentru a reflecta cantitatea operațiunilor efectuate cu fișiere.
- realpath_cache_ttl integer
-
Durata de timp (în secunde) pentru a păstra în cache informația despre calea unui fișier sau director. Pentru sisteme cu fișiere care se modifică rar, considerați mărirea acestei valori.
Manipularea datelor
| Denumirea | Valoarea implicită | Poate fi schimbată în | Istoria schimbărilor |
|---|---|---|---|
| track_vars | "On" | PHP_INI_?? | |
| arg_separator.output | "&" | PHP_INI_ALL | Disponibil începând cu PHP 4.0.5. |
| arg_separator.input | "&" | PHP_INI_PERDIR | Disponibil începând cu PHP 4.0.5. |
| variables_order | "EGPCS" | PHP_INI_PERDIR | PHP_INI_ALL în PHP <= 5.0.5. |
| request_order | "" | PHP_INI_SYSTEM|PHP_INI_PERDIR | Disponibil începând cu PHP 5.3.0 |
| auto_globals_jit | "1" | PHP_INI_PERDIR | Disponibil începând cu PHP 5.0.0. |
| register_globals | "0" | PHP_INI_PERDIR | PHP_INI_ALL în PHP <= 4.2.3. |
| register_argc_argv | "1" | PHP_INI_PERDIR | PHP_INI_ALL în PHP <= 4.2.3. |
| register_long_arrays | "1" | PHP_INI_PERDIR | Disponibil începând cu PHP 5.0.0. Defavorizat în PHP 5.3.0. Această facilitate dezaprobată cu siguranță va fi eliminată în viitor. |
| post_max_size | "8M" | PHP_INI_PERDIR | PHP_INI_SYSTEM în PHP <= 4.2.3. Disponibil începând cu PHP 4.0.3. |
| gpc_order | "GPC" | PHP_INI_ALL | |
| auto_prepend_file | NULL | PHP_INI_PERDIR | PHP_INI_ALL în PHP <= 4.2.3. |
| auto_append_file | NULL | PHP_INI_PERDIR | PHP_INI_ALL în PHP <= 4.2.3. |
| default_mimetype | "text/html" | PHP_INI_ALL | |
| default_charset | "" | PHP_INI_ALL | |
| always_populate_raw_post_data | "0" | PHP_INI_PERDIR | PHP_INI_ALL în PHP <= 4.2.3. Disponibil începând cu PHP 4.1.0. |
| allow_webdav_methods | "0" | PHP_INI_PERDIR |
Iată o explicație pe scurt a directivelor de configurare.
- track_vars boolean
-
Dacă este activat, atunci variabilele Environment, GET, POST, Cookie și Server pot fi găsite în tablourile asociative globale $_ENV, $_GET, $_POST, $_COOKIE și $_SERVER.
Atrageți atenția că începând cu PHP 4.0.3,
track_varseste întotdeauna activat. - arg_separator.output string
-
Separatorul utilizat în URL-urile generate de PHP pentru a separa argumentele.
- arg_separator.input string
-
Lista separator(arelor) folosite de PHP pentru a analiza și transfera URL-urile de intrare în variabile.
Notă:
Fiecare caracter din această directivă este considerat separator!
- variables_order string
-
Stabilește ordinea prelucrării variabileleor EGPCS ( Environment, Get, Post, Cookie și Server). Spre exemplu, dacă variables_order este stabilit în "SP", atunci PHP va crea superglobals $_SERVER și $_POST, dar nu va crea $_ENV, $_GET și $_COOKIE. Stabilirea valorii "" înseamnă că nici un superglobals nu va fi stabilit.
Dacă directiva dezaprobată register_globals este stabilită, atunci variables_order de asemenea configurează ordinea în care variabilele ENV, GET, POST, COOKIE și SERVER sunt populate în domeniul global. Deci, spre exemplu, dacă variables_order este stabilit în "EGPCS", register_globals este activat, și ambele $_GET['action'] și $_POST['action'] sunt stabilite, atunci $action va conține valoarea $_POST['action'] deoarece P urmează după G în valoarea directivei din exemplul dat.
AvertizareÎn ambele SAPI-uri CGI și FastCGI, $_SERVER este de asemenea populat cu valori din mediu; S este întotdeauna echivalent cu ES independent de amplasarea E în această directivă.
Notă:
Conținutul și ordinea valorilor din variabila $_REQUEST sunt de asemenea afectate de această directivă.
- request_order string
-
Această directuvă descrie ordinea în care PHP PHP înregistrează variabilele GET, POST și Cookie în tabloul _REQUEST. Înregistrarea este efectuată de la stânga la dreapta, valorile noi se suprapun peste cele vechi.
Dacă această directivă nu este stabilită, variables_order este utilizată pentru a umple conținutul $_REQUEST.
Observați că fișierul php.ini din distributivul original nu conține 'C' pentru cookies din motive de securitate.
- auto_globals_jit boolean
-
Când este activată, variabilele SERVER și ENV sunt create prima dată când sunt utilizate (Exact la timp - Just In Time) în loc să fie create la lansarea scriptului. Dacă aceste variabile nu sunt utilizate în script, atunci activarea acestei directive va duce la o creștere a performanței.
Directivele PHP register_globals, register_long_arrays și register_argc_argv trebuie să fie dezactivate pentru ca această directivă să aibă efect. Începând cu PHP 5.1.3 nu este necesar de a avea register_argc_argv dezactivat.
AvertizareUtilizarea variabilelor SERVER și ENV este verificată în timpul compilării de aceea utilizarea lor prin de ex. variabile variabile nu va cauza inițializarea lor.
- register_globals boolean
-
Indică dacă variabilele EGPCS (Environment, GET, POST, Cookie, Server) trebuie să fie înregistrate ca variabile globale, sau nu.
Începând cu » PHP 4.2.0, această directivă are valoarea implicită off.
Vă rugăm să citiți capitolul ce ține de securitate Utilizarea register_globals pentru mai multe informații.
Vă rugăm să atrageți atenția că
register_globalsnu poate fi stabilit în timpul execuției ( ini_set()). Cu toate acestea puteți utiliza .htaccess dacă serverul permite aceasta, după cum e descris anterior. Un exemplu de înregistrare .htaccess:php_flag register_globals off.Notă:
register_globalseste afectată de directiva variables_order.AvertizareAceastă facilitate este DEZAPROBATĂ începând cu PHP 5.3.0. Utilizarea acestei facilități este foarte nerecomandată.
- register_argc_argv boolean
- Indică PHP dacă trebuie declarate variabilele argv & argc (care ar conține informația GET). Accesați de asemenea linia de comandă. De asemenea această directivă a apărut în PHP 4.0.0 și a fost întotdeauna "on" înainte de aceasta.
- register_long_arrays boolean
-
Indică PHP dacă trebuie înregistrate, sau nu
variabilele
predefinite lungi învechite de tip
$HTTP_*_VARS. Când este stabilită în On
(implicit), variabilele PHP predefinite lungi, cumar fi
$HTTP_GET_VARS vor fi definite. Dacă nu le
utilizați, este recomandabil să le dezactivați din motivul
performanței. În loc, utilizați tablourile superglobale, cum ar fi
$_GET.
Această directivă a devenit disponibilă în PHP 5.0.0.
Avertizare
Această facilitate este DEZAPROBATĂ începând cu PHP 5.3.0. Utilizarea acestei facilități este foarte nerecomandată.
- post_max_size integer
-
Stabilețte mărimea maximă permisă a datelor "post". Această mărime
de asemenea afectează încărcarea fișierelor. Pentru a încărca
fișiere voluminoase această valoare trebuie să fie mai mare decât
upload_max_filesize.
Dacă limita de memorie e activată de către scriptul de configurare,
memory_limit de asemenea
afectează încărcarea fișierelor. Vorbind la general,
memory_limit ar trebui să
fie mai mare decât post_max_size.
În cazul utilizării unui integer, valoarea este măsurată în
octeți. De asemenea poate fi utilizată notația prescurtată, după cum este
descris în acest FAQ.
Dacă mărimea datelor post este mai mare decât post_max_size,
superglobalele
$_POST și $_FILES sunt vide.
Acest fapt poate fi depistat prin diferite metode, de ex.
transmițând o valoare variabilei $_GET în
scriptul care procesează datele, de ex.
<form action="edit.php?processed=1">,
și apoi verificând dacă $_GET['processed'] este
stabilit.
Notă:
PHP permite prescurtări pentru valori în biți, inclusiv K (kilo), M (mega) și G (giga). PHP va efectua convertirea automat dacă veți utiliza una din acestea. Fiți atent să nu depășiți limita de 32 biți pentru numere întregi cu semn (dacă utilizați versiuni pe 32 de biți) deoarece aceasta va cauza eșuarea script-ului dumneavoastră.
- gpc_order string
-
Stabilește ordinea analizei și transferului variabilelor GET/POST/COOKIE. Valoarea implicită a acestei directive este "GPC". Stabilirea acesteia în "GP", spre exemplu, va cauza PHP să ignoreze complet cookie și să rescrie orice variabilă primită prin metoda GET cu variabilele primite prin metoda POST și care au același nume.
Notă:
Această opțiune nu este disponibilă în PHP 4. În loc, utilizați variables_order.
- auto_prepend_file string
-
Specifică denumirea unui fișier care va fi automat analizat și executat înainte de fișierul principal. Acest fișier este inclus, ca și cum ar fi fost apelat cu funcția require(), deci include_path este utilizat.
Valoarea specială none anulează executarea automată.
- auto_append_file string
-
Specifică denumirea unui fișier care va fi automat analizat și executat după fișierul principal. Acest fișier este inclus, ca și cum ar fi fost apelat cu funcția require(), deci include_path este utilizat.
Valoarea specială none anulează executarea automată.
Notă: Dacă scriptul este terminat cu exit(), executarea automată nu va avea loc.
- default_mimetype string
-
- default_charset string
-
PHP întotdeauna transmite implicit codificarea caracterelor în antetul Content-type: . Pentru a dezactiva trimiterea setului de caractere, pur și simplu eliminați valoarea acestui parametru.
- always_populate_raw_post_data boolean
-
Întotdeauna populează $HTTP_RAW_POST_DATA cu datele crude POST. În caz contrar, variabila este populată numai cu date de tip MIME necunoscut. Oricum, metoda preferată pentru a accesa datele crude POST este php://input. $HTTP_RAW_POST_DATA nu este disponibilă în cazul enctype="multipart/form-data".
- allow_webdav_methods boolean
-
Permite prelucrarea cererilor http WebDAV din scripturile PHP (de ex. PROPFIND, PROPPATCH, MOVE, COPY, etc.). Această directivă nu există începând cu PHP 4.3.2. Dacă doriți să primiți datele post a acestor cereri, trebuie să stabiliți de asemenea și always_populate_raw_post_data.
Accesați de asemenea: magic_quotes_gpc, magic_quotes_runtime și magic_quotes_sybase.
Căile și directoarele
| Denumirea | Valoarea implicită | Poate fi schimbată în | Istoria schimbărilor |
|---|---|---|---|
| include_path | ".;/calea/spre/php/pear" | PHP_INI_ALL | |
| open_basedir | NULL | PHP_INI_ALL | PHP_INI_SYSTEM în PHP < 5.3.0 |
| doc_root | NULL | PHP_INI_SYSTEM | |
| user_dir | NULL | PHP_INI_SYSTEM | |
| extension_dir | "/calea/spre/php" | PHP_INI_SYSTEM | |
| extension | NULL | numai în php.ini | |
| zend_extension | NULL | numai în php.ini | |
| zend_extension_debug | NULL | numai în php.ini | |
| zend_extension_debug_ts | NULL | numai în php.ini | |
| zend_extension_ts | NULL | numai în php.ini | |
| cgi.check_shebang_line | "1" | PHP_INI_SYSTEM | Disponibil începând cu PHP 5.2.0. |
| cgi.fix_pathinfo | "1" | PHP_INI_SYSTEM | Disponibil începând cu PHP 4.3.0. PHP_INI_ALL anterior versiunii PHP 5.2.1. |
| cgi.force_redirect | "1" | PHP_INI_SYSTEM | Disponibil începând cu PHP 4.2.0. PHP_INI_ALL anterior versiunii PHP 5.2.1. |
| cgi.redirect_status_env | NULL | PHP_INI_SYSTEM | Disponibil începând cu PHP 4.2.0. PHP_INI_ALL anterior versiunii PHP 5.2.1. |
| fastcgi.impersonate | "0" | PHP_INI_SYSTEM | Disponibil începând cu PHP 4.3.0. PHP_INI_ALL anterior versiunii PHP 5.2.1. |
| fastcgi.logging | "1" | PHP_INI_SYSTEM | Disponibil începând cu PHP 4.3.0. PHP_INI_ALL anterior versiunii PHP 5.2.1. |
| cgi.rfc2616_headers | "0" | PHP_INI_ALL | Disponibil începând cu PHP 4.3.0. |
Iată o explicație pe scurt a directivelor de configurare.
- include_path string
-
Specifică o listă de directoare, unde funcțiile require(), include(), fopen(), file(), readfile() și file_get_contents() vor căuta fișierele. Formatul este ca și în cazul variabilei de mediu a sistemului PATH: o listă de directoare separate prin două puncte în Unix, sau punct și virgulă în Windows.
PHP ia în considerație fiecare înregistrare separată din calea de includere atunci când caută fișierele spre a fi incluse. El va verifica prima cale și dacă nu-l va găsi va căuta în următoarea cale și așa până când fișierul este localizat, sau va întoarce o avertizare sau o eroare. Puteți să stabiliți sau să modificați calea de includere în timpul rulării utilizând funcția set_include_path().
Example #1 include_path în Unix
include_path=".:/php/includes"
Example #2 include_path în Windows
include_path=".;c:\php\includes"
Utilizarea unui . în calea de includere permite includeri relative, deoarece desemnează directorul curent. Însă este mai eficient de a utiliza în mod explicit include './file' decât de a impune PHP să verifice permanent toate fișierele din directorul curent ce vor fi incluse.
- open_basedir string
-
Limitează fișierele ce pot fi deschise de PHP în arborele directoarelor specificat, inclusiv și însuși fișierul. Această directivă NU este afectată de activarea sau dezactivarea Modului securizat.
Când un script încearcă să deschidă un fișier, de exemplu cu fopen() sau gzopen(), se verifică amplasarea fișierului. Dacă fișierul este în afara arborelui de directoare specificat, PHP va refuza să-l deschidă. Toate legăturile simbolice sunt rezolvate, de aceea nu este posibil de a evita această restricție cu un symlink. Dacă fișierul nu există atunci symlink-ul nu poate fi rezolvat și denumireas fișierului este comparată cu open_basedir (rezolvată).
Valoarea specială
.indică că directorul de lucru al script-ului va fi utilizat în calitate de director de bază. Aceasta însă este un pic periculos, deoarece directorul de lucru al script-ului poate fi ușor schimbat cu chdir().În httpd.conf, open_basedir poate fi deconectată (de ex. pentru unele gazde virtuale) în același mod ca și orice altă directivă de configurare astfel: "php_admin_value open_basedir none".
În Windows, denumirile directoarelor trebuie separate cu punct și virgulă. În celelalte sisteme denumirile directoarelor trebuie separate cu două puncte. În calitate de modul Apache, căile pentru open_basedir din directoarele-părinte sunt acum moștenite automat.
Restricția specificată cu open_basedir este de fapt un prefix, și nu o denumire a directorului. Aceasta înseamnă că "open_basedir = /dir/incl" de asemenea permite accesul la "/dir/include" și "/dir/incls", dacă acestea există. Atunci când doriți să restricționați accesul doar la un anumit director, adăugați un slash la sfârșit. De exemplu: open_basedir = /dir/incl/
Modul implicit este de a permite deschiderea tuturor fișierelor.
Notă:
Începând cu PHP 5.3.0 open_basedir poate fi restrânsă în timpul rulării. Aceasta înseamnă că dacă open_basedir este stabilită la /www/ în php.ini, un script poate restrânge configurația la /www/tmp/ în timpul rulării cu ini_set()
- doc_root string
-
"Directorul root" al PHP de pe server. Este utilizat numai dacă nu este vid. Dacă PHP este configurat cu modul securizat, nici un fișier din afara acestui director nu este servit. Dacă PHP nu a fost compilat cu FORCE_REDIRECT, trebuie să stabiliți doc_root dacă rulați PHP în calitate de CGI cu orice web server (în afară de IIS). Alternativa este de a utiliza configurația cgi.force_redirect de mai jos.
- user_dir string
-
Denumirea de bază a directorului utilizat într-un director de bază al utilizatorului pentru fișierele PHP, spre exemplu public_html.
- extension_dir string
-
În care director PHP ar trebui să caute extensiile încărcate dinamic. Accesați de asemenea: enable_dl, și dl().
- extension string
-
Care extensie dinamică trebuie încărcată atunci când PHP este lansat.
- zend_extension string
-
Calea absolută spre extensia Zend încărcată dinamic (spre exemplu APD) ce va fi încărcată la startarea PHP.
- zend_extension_debug string
-
Varianta zend_extension pentru extensii compilate cu informații de debug.
- zend_extension_debug_ts string
-
Varianta zend_extension pentru extensii compilate cu informații de debug și protecția firelor de execuție.
- zend_extension_ts string
-
Varianta zend_extension pentru extensii compilate cu protecția firelor de execuție.
- cgi.check_shebang_line boolean
-
Controlează dacă PHP în varianta CGI verifică existența liniei ce începe cu #! (shebang) la începutul scriptului ce va fi rulat. Această linie poate fi necesară dacă script-ul susține rularea atât în calitate de script independent, cât și ca PHP CGI. PHP în mod CGI trece peste această linie și ignoră conținutul ei dacă această directivă e activată.
- cgi.fix_pathinfo boolean
-
Oferă susținerea PATH_INFO/PATH_TRANSLATED reale pentru CGI. Comportamentul precedent al PHP era de a stabili PATH_TRANSLATED în SCRIPT_FILENAME și de a nu analiza care este PATH_INFO. Pentru mai multe informații despre PATH_INFO, vedeți specificările CGI. Stabilirea valorii 1 va cauza PHP CGI să-și corecteze căile pentru a se conforma specificațiilor. Stabilirea valorii zero cauzează PHP să se comporte ca mai înainte. Valoarea implicită este zero. Dumneavoastră ar trebui să vă corectați script-urile ca să utilizeze SCRIPT_FILENAME și nu PATH_TRANSLATED.
- cgi.force_redirect boolean
-
cgi.force_redirect este necesar pentru a oferi securitate la rularea PHP în calitate de CGI cu majoritatea serverelor web. Dacă nu este definită, PHP implicit activează această directivă. Puteți să o dezectivați la propriul risc.
Notă:
Utilizatorii Windows: puteți să dezactivați fără primejdie această directivă pentru IIS, de fapt trebuie să faceți aceasta. Pentru ca OmniHTTPD sau Xitami să funcționeze trebuie să o dezactivați.
- cgi.redirect_status_env string
-
Dacă cgi.force_redirect este activată și nu rulați web server-ele Apache sau Netscape (iPlanet), s-ar putea să fie necesar să stabiliți o variabilă de mediu, pe care PHP o va căuta pentru a ști dacă e OK de a continua execuția.
Notă:
Stabilirea acestei variabile ar putea cauza probleme se securitate, întâi clarificați ce doriți să realizați.
- fastcgi.impersonate string
-
FastCGI sub IIS (pe sisteme bazate pe WINNT) susțin posibilitatea de a juca rolul tichetelor de securitate ale clientului apelant. Aceasta îi permite IIS să definească contextul de securitate sub care rulează cererea. mod_fastcgi sub Apache nu susține în prezent (03/17/2002) această facilitate. Stabiliți valoarea 1 la rularea sub IIS. Implicit este zero.
- fastcgi.logging boolean
-
Activează logarea SAPI la utilizarea FastCGI. Impicit logarea este activată.
- cgi.rfc2616_headers int
-
Indică PHP ce tip de antete să utilizeze la trimiterea codului de răspuns HTTP. Dacă este stabilită în 0, PHP trimite un antet Status: care este susținut de Apache și alte servere web. Când această opțiune este stabilită în 1, PHP va trimite antete ce se conformează cu » RFC 2616. Schimbați valoarea din 0 numai dacă cunoașteți ce faceți.
Încărcarea fișierelor
| Denumirea | Valoarea implicită | Poate fi schimbată în | Istoria schimbărilor |
|---|---|---|---|
| file_uploads | "1" | PHP_INI_SYSTEM | PHP_INI_ALL în PHP <= 4.2.3. Disponibil începând cu PHP 4.0.3. |
| upload_tmp_dir | NULL | PHP_INI_SYSTEM | |
| upload_max_filesize | "2M" | PHP_INI_PERDIR | PHP_INI_ALL în PHP <= 4.2.3. |
| max_file_uploads | 20 | PHP_INI_SYSTEM | Disponibilă începând cu PHP 5.2.12. |
Iată o explicație pe scurt a directivelor de configurare.
- file_uploads boolean
-
Dacă să permită, sau nu încărcări de fișiere prin HTTP. Accesați de asemenea directivele upload_max_filesize, upload_tmp_dir și post_max_size.
În cazul utilizării unui integer, valoarea este măsurată în octeți. De asemenea poate fi utilizată notația prescurtată, după cum este descris în acest FAQ. - upload_tmp_dir string
-
Directorul temporar utilizat pentru stocarea fișierelor la încărcare. Trebuie să aibă drept de înscriere pentru utilizatorul cu care rulează PHP. Dacă nu este specificat, PHP va folosi directorul implicit al sistemului.
Dacă în directorul specificat aici nu este posibilitate de a înscrie, PHP revine la directorul temporar implicit al sistemului. Dacă open_basedir este activat, atunci trebuie permisă înscrierea în directorul temporar de sistem pentru ca încărcarea să se efectueze cu succes.
- upload_max_filesize integer
-
Mărimea maximă a unui fișier încărcat.
În cazul utilizării unui integer, valoarea este măsurată în octeți. De asemenea poate fi utilizată notația prescurtată, după cum este descris în acest FAQ. - max_file_uploads integer
-
Numărul maxim de fișiere permise de a fi încărcate simultan. Începând cu PHP 5.3.4, câmpurile pentru încărcare necompletate nu sunt luate în considerare la verificarea acestei limite.
SQL general
| Denumirea | Valoarea implicită | Poate fi schimbată în | Istoria schimbărilor |
|---|---|---|---|
| sql.safe_mode | "0" | PHP_INI_SYSTEM |
Iată o explicație pe scurt a directivelor de configurare.
- sql.safe_mode boolean
-
Dacă este activată, funcțiile de conectare la baze de date care utilizează valori implicite, le vor utiliza pe acestea, în locul argumentelor furnizate. Pentru a afla valorite implicite, citiți documentația funcției de conectare pentru baza de date respectivă.
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.
