https://haydenjames.io/understanding-php-memory_limit/ explains the memory_limit setting nicely.
This list includes the core php.ini directives you can set to configure your PHP setup. Directives handled by extensions are listed and detailed at the extension documentation pages respectively; Information on the session directives for example can be found at the sessions page.
Notă:
Valorile implicite afișate aici sunt utilizate când php.ini nu este încărcat; valorile pentru mediul de producere și dezvoltare ale php.ini pot varia.
Denumire | Valoare implicită | Poate fi modificată | Jurnal al modificărilor |
---|---|---|---|
short_open_tag | "1" | PHP_INI_PERDIR | |
asp_tags | "0" | PHP_INI_PERDIR | Eliminată în PHP 7.0.0. |
precision | "14" | PHP_INI_ALL | |
serialize_precision | "-1" | PHP_INI_ALL | Până la PHP 5.3.6 valoarea implictă a fost 100. Până la PHP 7.1.0 valoarea implictă a fost 17. |
y2k_compliance | "1" | PHP_INI_ALL | Eliminat începând cu PHP 5.4.0. |
allow_call_time_pass_reference | "1" | PHP_INI_PERDIR | Eliminat începând cu PHP 5.4.0. |
disable_functions | "" | Numai în PHP_INI_SYSTEM | |
disable_classes | "" | numai în php.ini | |
exit_on_timeout | "" | PHP_INI_ALL | Disponibil începând cu PHP 5.3.0. |
expose_php | "1" | numai în php.ini | |
hard_timeout | "2" | PHP_INI_SYSTEM | Disponibil începând cu PHP 7.1.0. |
zend.exception_ignore_args | "0" | PHP_INI_ALL | Disponibil începând cu PHP 7.4.0 |
zend.multibyte | "0" | PHP_INI_ALL | Disponibil începând cu PHP 5.4.0. |
zend.script_encoding | NULL | PHP_INI_ALL | Disponibil începând cu PHP 5.4.0 |
zend.detect-unicode | NULL | PHP_INI_ALL | Disponibil începând cu PHP 5.4.0 |
zend.signal_check | "0" | PHP_INI_SYSTEM | Disponibil începând cu PHP 5.4.0 |
zend.assertions | "1" | PHP_INI_ALL cu restricții | Disponibilă începând cu PHP 7.0.0. |
zend.ze1_compatibility_mode | "0" | PHP_INI_ALL | Eliminat în PHP 5.3.0 |
detect_unicode | "1" | PHP_INI_ALL | Disponibil începând cu PHP 5.1.0. Redenumit în zend.detect-unicode începând cu PHP 5.4.0. |
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
<?=
înainte de PHP 5.4.0, care este identică cu<? echo
. Utilizarea acestei scurtături necesită cashort_open_tag
să fie activată. Începând cu PHP 5.4.0,<?=
este întotdeauna disponibilă.
Versiune | Descriere |
---|---|
7.0.0 | Eliminat din PHP. |
precision
integer
-1
înseamnă că pentru rotungirea acestor numere va fi
utilizat un algoritm de rotungire îmbunătățit.
serialize_precision
integer
-1
înseamnă că pentru rotungirea acestor numere va fi
utilizat un algoritm de rotungire îmbunătățit.
y2k_compliance
boolean
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.
Vezi de asemenea și References Explained.
Versiune | Descriere |
---|---|
5.4.0 | Eliminat din PHP. |
5.3.0 |
Emite o eroare de nivel E_DEPRECATED .
|
5.0.0 |
Învechit, și generează o eroare de nivel E_COMPILE_WARNING .
|
expose_php
boolean
Expune în lume faptul că PHP este instalat pe server, ceea ce include versiunea PHP în antetul HTTP (de ex. X-Powered-By: PHP/5.3.7). Anterior versiunii PHP 5.5.0 guid-urile logotipului PHP sunt de asemenea expuse, astfel încât adăugându-le la URL, scriptul dvs. va afișa logotipul corespunzător (de ex. » https://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42). Aceasta de asemenea afectează informațiile afișate de phpinfo(); dacă parametrul e dezactivat, logotipul PHP și informațiile despre autori nu vor fi afișate.
Notă:
Începând cu PHP 5.5.0 aceste guid-uri și funcția php_logo_guid() au fost eliminate din PHP și guid-urile sunt înlocuite cu URI-uri de date. Astfel, accesânt logotipul PHP prin adăugarea guid-ului la URL nu mai funcționează. În mod similar, dezactivarea
expose_php
nu va afecta afișarea logotipului PHP în phpinfo().
Vezi de asemenea php_logo_guid() și phpcredits().
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
zend.assertions
integer
1
, va fi generat și executat
cod de aserțiune (în regimul de dezvoltare). Când este stabilită în
0
, va fi generat cod de aserțiune, dar nu va fi
executat la rulare. Când este stabilit în -1
, nu va fi
generat cod de aserțiune, făcând ca aserțiunile să fie cu cost nul (în
regimul de producție).
Notă:
Dacă un proces e lansat în regim de producție, zend.assertions nu poate fi schimbată în timpul rulării, deoarece codul pentru aserțiuni nu a fost generat.
Dacă un proces e lansat în regim de dezvoltare, zend.assertions nu poate fi stabilită în
-1
în timpul rulării.
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.
Această facilitate este ÎNVECHITĂ și ELIMINATĂ începând cu PHP 5.3.0.
hard_timeout
integer
zend.exception_ignore_args
boolean
Exclude argumentele din "stack trace"-urile generate din excepții.
zend.multibyte
boolean
Activează interpretarea fișierelor sursă cu seturi de caractere multi-byte. Activarea zend.multibyte este necesară pentru a utiliza codificări ale caracterelor precum SJIS, BIG5, etc. care conțin caractere speciale în datele șirurilor de caractere multi-byte. Codificările compatibile cu ISO-8859-1, precum UTF-8, EUC, etc. nu necesită această opțiune.
Pentru a activa zend.multibyte este necesar ca extensia mbstring să fie disponibilă.
zend.script_encoding
string
Această valoarea va fi folosită numa dacă directiva declare(encoding=...) apare la începutul scriptului. Când este utilizată o codificare incompatibilă cu ISO-8859-1, trebuie utilizate atât zend.multibyte, cât și zend.script_encoding.
Șirurile de caractere literale vor fi transliterate din zend.script_enconding în mbstring.internal_encoding, ca și cum ar fi fost apelată mb_convert_encoding().
zend.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.
zend.signal_check
boolean
Verifică semnale suprascrise la încheierea scriptului.
exit_on_timeout
boolean
Această directivă folosită cu Apache1 și mod mod_php forțează terminarea copilului Apache dacă în scriptul sa atins limita de execuție. Acea limită causa un apel către longjmp() î Apache1 care ar putea lăsa unele extensii într-o stare inconsisentă. Prin terminarea procesului orice blocare pe memorie va fi eliminată.
Denumire | Valoare implicită | Poate fi modificată | Jurnal al modifică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.
Denumire | Valoare implicită | Poate fi modificată | Jurnal al modificărilor |
---|---|---|---|
realpath_cache_size | "4M" | PHP_INI_SYSTEM | Disponibil începând cu PHP 5.1.0. Înainte de PHP 7.0.16 și 7.1.2, valoare implicită a fost "16K" |
realpath_cache_ttl | "120" | PHP_INI_SYSTEM | Disponibil începând cu PHP 5.1.0. |
Notă:
Utilizarea open_basedir va opri buferizarea realpath.
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.
Dimensiunea reprezintă numărul total de octeți din șirurile cu căi stocate, plus dimensiunea datelor asociate cu înregistrarea cache. Aceasta înseamnă că pentru a stoca căi mai lungi în memoria cache, dimensiunea acesteia trebuie să fie mai mare. Această valoare nu controlează direct numărul de căi distincte, care pot fi stocate în memoria cache.
Dimensiunea necesară pentru datele înregistrării din memoria cache este dependentă de sistem.
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.
Denumire | Valoare implicită | Poate fi modificată | Jurnal al modificărilor |
---|---|---|---|
arg_separator.output | "&" | PHP_INI_ALL | |
arg_separator.input | "&" | PHP_INI_PERDIR | |
variables_order | "EGPCS" | PHP_INI_PERDIR | PHP_INI_ALL în PHP <= 5.0.5. |
request_order | "" | 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. Eliminat începând cu PHP 5.4.0. |
register_argc_argv | "1" | PHP_INI_PERDIR | |
register_long_arrays | "1" | PHP_INI_PERDIR | Disponibil începând cu PHP 5.0.0. Defavorizat în PHP 5.3.0. Eliminat începând cu PHP 5.4.0. |
enable_post_data_reading | "1" | PHP_INI_PERDIR | Available since PHP 5.4.0 |
post_max_size | "8M" | PHP_INI_PERDIR | |
auto_prepend_file | NULL | PHP_INI_PERDIR | |
auto_append_file | NULL | PHP_INI_PERDIR | |
default_mimetype | "text/html" | PHP_INI_ALL | |
default_charset | "UTF-8" | PHP_INI_ALL | Are valoarea implicită "UTF-8" începând cu PHP >= 5.6.0; vidă pentru PHP < 5.6.0. |
always_populate_raw_post_data | "0" | PHP_INI_PERDIR | Eliminat în PHP 7.0.0. |
Iată o explicație pe scurt a directivelor de configurare.
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 (E
nvironment,
G
et, P
ost,
C
ookie și S
erver).
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 învechită
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.
Î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.
Utilizarea 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_globals
nu 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_globals
este afectată de directiva variables_order.
Această facilitate a fost ÎNVECHITĂ începând cu PHP 5.3.0 și ELIMINATĂ începând cu PHP 5.4.0.
register_argc_argv
boolean
register_long_arrays
boolean
Această facilitate a fost ÎNVECHITĂ începând cu PHP 5.3.0 și ELIMINATĂ începând cu PHP 5.4.0.
enable_post_data_reading
boolean
post_max_size
integer
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, atunci
$_POST și $_FILES
(variabile superglobale)
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 baiț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ă.
Versiune | Descriere |
---|---|
5.3.4 |
post_max_size = 0 nu va dezactiva limita în
caz dacă tipul conținutului este application/x-www-form-urlencoded
sau dacă nu este înregistrat cu PHP.
|
5.3.2 , 5.2.12 |
Permite dimensiunea nelimitată a datelor transmise prin post prin
stabilirea post_max_size în 0.
|
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
Implicit PHP va afișa un tip de media utilizând antetul Content-Type. Pentru a dezactiva aceasta, stabiliți o valoare vidă pentru opțiune.
Tipul de media implicit pentru PHP este text/html.
default_charset
string
În PHP 5.6 și ulterior, "UTF-8" este valoarea implicită și aceasta este
folosită ca codare implicită a caracterelor pentru funcțiile
htmlentities(),
html_entity_decode() și
htmlspecialchars() dacă parametrul
encoding
este omis. Valoarea
default_charset
de asemenea va fi utilizată pentru
a stabili codarea implicită a caracterelor pentru funcțiile
iconv dacă opțiunile de configurare
iconv.input_encoding
,
iconv.output_encoding
și
iconv.internal_encoding
nu sunt stabilite, și pentru funcțiile
mbstring dacă opțiunile de configurare
mbstring.http_input
mbstring.http_output
mbstring.internal_encoding
nu sunt stabilite.
Toate versiunile PHP vor folosi această valoare în calitate de set de caractere în antetul implicit Content-Type transmis de PHP dacă antetul nu este suprascris de un apel al funcției header().
Stabilirea valorii vide a parametrului
default_charset
nu este recomandată.
input_encoding
string
Disponibil începând cu PHP 5.6.0. Acest parametru e utilizat pentru module multi-byte, precum mbstring și iconv. Implicit valoarea e vidă.
output_encoding
string
Disponibil începând cu PHP 5.6.0. Acest parametru e utilizat pentru module multi-byte, precum mbstring și iconv. Implicit valoarea e vidă.
internal_encoding
string
Disponibil începând cu PHP 5.6.0. Acest parametru e utilizat pentru module multi-byte, precum mbstring și iconv. Implicit valoarea e vidă. Dacă este utilizat default_charset vid.
always_populate_raw_post_data
mixed
Această facilitate este ÎNVECHITĂ începând cu PHP 5.6.0 și ELIMINATĂ începând cu PHP 7.0.0.
Dacă este stabilit în true
, PHP întotdeauna va popula
$HTTP_RAW_POST_DATA cu conținutul neprelucrat al
datelor POST. În caz contrar, variabila e populată doar când tipul MIME
al datelor nu este cunoscut.
Metoda preferabilă de accesare a datelor POST neprelucrate este
php://input, și
$HTTP_RAW_POST_DATA este descurajată în PHP 5.6.0 și
ulterior. Stabilirea always_populate_raw_post_data
în -1
va activa noul comportament, care va fi
implementat într-o versiune viitoare a PHP, conform căruia
$HTTP_RAW_POST_DATA nici nu este definită.
Indiferent de setare, $HTTP_RAW_POST_DATA nu este
disponibilă cu enctype="multipart/form-data"
.
Accesați de asemenea: magic_quotes_gpc, magic_quotes_runtime și magic_quotes_sybase.
Denumire | Valoare implicită | Poate fi modificată | Jurnal al modifică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 | |
user_ini.cache_ttl | "300" | PHP_INI_SYSTEM | Disponibil începând cu PHP 5.3.0. |
user_ini.filename | ".user.ini" | PHP_INI_SYSTEM | Disponibil începând cu PHP 5.3.0. |
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 | Disponibil înainte de PHP 5.3.0. |
zend_extension_debug_ts | NULL | numai în php.ini | Disponibil înainte de PHP 5.3.0. |
zend_extension_ts | NULL | numai în php.ini | Disponibil înainte de PHP 5.3.0. |
cgi.check_shebang_line | "1" | PHP_INI_SYSTEM | Disponibil începând cu PHP 5.2.0. |
cgi.discard_path | "0" | PHP_INI_SYSTEM | Disponibil începând cu PHP 5.3.0. |
cgi.fix_pathinfo | "1" | PHP_INI_SYSTEM | PHP_INI_ALL anterior versiunii PHP 5.2.1. |
cgi.force_redirect | "1" | PHP_INI_SYSTEM | PHP_INI_ALL anterior versiunii PHP 5.2.1. |
cgi.nph | "0" | PHP_INI_SYSTEM | Disponibil începând cu PHP 5.3.0. |
cgi.redirect_status_env | NULL | PHP_INI_SYSTEM | PHP_INI_ALL anterior versiunii PHP 5.2.1. |
cgi.rfc2616_headers | "0" | PHP_INI_ALL | |
fastcgi.impersonate | "0" | PHP_INI_SYSTEM | PHP_INI_ALL anterior versiunii PHP 5.2.1. |
fastcgi.logging | "1" | PHP_INI_SYSTEM | PHP_INI_ALL anterior versiunii PHP 5.2.1. |
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.
Notă:
Variabilele
ENV
sunt de asemenea accesibile în fișiere .ini. Astfel, este posibil de a obține referința către directorul home utilizând${LOGIN}
și${USER}
.Variabilele de mediu pot varia în diferite API ale serverelor, deoarece mediile pot fi diferite.
Example #3 include_path în Unix, utilizând variabile de mediu ${USER}
include_path = ".:${USER}/pear/php"
open_basedir
string
Limitează fișierele ce pot fi accesate 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ă acceseze sistemul de fișiere, de exemplu utilizând include sau fopen(), se verifică amplasarea fișierului. Dacă fișierul este în afara arborelui de directoare specificat, PHP va refuza să-l acceseze. 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ă).
open_basedir poate afecta mai mult decât funcțiile
sistemului de fișiere; spre exemplu dacă MySQL
este
configurat să utilizeze driverele mysqlnd
, atunci
LOAD DATA INFILE
va fi afectat de open_basedir.
Majoritatea funcționalității extinse a PHP utilizează
open_basedir
în acest mod.
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(). Când se listează câteva directoare, puteți utiliza constantaPATH_SEPARATOR
ca separator, indiferent de sistemul de operare.
Notă:
Utilizarea open_basedir va stabili realpath_cache_size la
0
și deci va deconecta buferizarea realpath.
doc_root
string
"Directorul root" al PHP de pe server. Este utilizat numai dacă nu este vid. 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_ini.cache_ttl
integer
user_ini.filename
string
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
Denumirea extensiei Zend încărcabile dinamic (spre exemplu XDebug) 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.discard_path
boolean
If this is enabled, the PHP CGI binary can safely be placed outside of the web tree and people will not be able to circumvent .htaccess security.
cgi.fix_pathinfo
boolean
Oferă susținerea reală a PATH_INFO
/
PATH_TRANSLATED
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: Când utilizați IIS, această opțiune trebuie dezactivată. Același lucru se aplică și pentru OmniHTTPD sau Xitami.
cgi.nph
boolean
If cgi.nph is enabled it will force cgi to always sent Status: 200 with every request.
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.
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:", conform » RFC 3875, 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.
Dacă această opțiune este activată și rulați PHP într-un mediu CGI (de ex. PHP-FPM), nu trebuie să utilizați antete de răspuns HTTP conform RFC 2616, în loc trebuie să utilizați echivalentele lor conform RFC 3875, de ex. în loc de header("HTTP/1.0 404 Not found"); trebuie să utilizați header("Status: 404 Not Found");
Schimbați valoarea din 0 numai dacă cunoașteți ce faceț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ă.
Denumire | Valoare implicită | Poate fi modificată | Jurnal al modificărilor |
---|---|---|---|
file_uploads | "1" | PHP_INI_SYSTEM | |
upload_tmp_dir | NULL | PHP_INI_SYSTEM | |
max_input_nesting_level | 64 | PHP_INI_PERDIR | Disponibil începând cu PHP 5.3.9. |
max_input_vars | 1000 | PHP_INI_PERDIR | Disponibil începând cu PHP 5.3.9. |
upload_max_filesize | "2M" | PHP_INI_PERDIR | |
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.
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.
Denumire | Valoare implicită | Poate fi modificată | Jurnal al modificărilor |
---|---|---|---|
sql.safe_mode | "0" | PHP_INI_SYSTEM | Eliminat în PHP 7.2.0 |
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 de utilizator. Pentru a afla detalii despre valorile implicite, accesați documentația funcției de conectare pentru baza de date respectivă.
Această opțiune a fost ELIMINATĂ începând cu PHP 7.2.0.
Denumire | Valoare implicită | Poate fi modificată | Jurnal al modificărilor |
---|---|---|---|
windows_show_crt_warning | "0" | PHP_INI_ALL | Disponibil începând cu PHP 5.4.0. |
Iată o explicație pe scurt a directivelor de configurare.
windows_show_crt_warning
boolean
Această directivă afișează atenționări Windows CRT la activare. Aceste antenționări erau afișate implicit până în versiunea PHP 5.4.0.
https://haydenjames.io/understanding-php-memory_limit/ explains the memory_limit setting nicely.
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"
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.
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.
I had a problem with 'open_basedir =' string in php.ini. This string was writtren in VirtualHost Directory directive of Apache2 and successfully rewrote the same php.ini setting! It happened with VestaCP, but I think, it's a common way. Goog luck!
It appears that if you use both the 'include_path' directives and 'open_basedir', that file searches will hit the include path *first*, before local files. But if 'open_basedir' is not in use, then local files are found first. For example, suppose you have code in '/var/www/myfile.php' which does:
<?php
require_once('config.php');
?>
Further, assume that there is a local file '/var/www/config.php', and there is also a file '/var/local/php/config.php'.
Next, if your php.ini has:
include_path = /var/local/php/
Normally, this would look for '/var/www/config.php' first, and if not found, then it would try '/var/local/php/config.php'.
But if you also have this in php.ini:
open_basedir = /var/www/:/var/local/php/
Then the require would reverse the order of the search, and load '/var/local/php/config.php', even when the local 'config.php' file exists.
Furthermore, if include_path contains directories not in open_basedir, you can end up with a fatal error. For example, change the directive to:
open_basedir = /var/www/:/var/local/includes/php/
Now the require will first find '/var/local/php/config.php' from the include_path, try to include it, but be unable to because of the open_basedir restrictions.
"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
If 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