Директиви на php.ini
PHP Manual

Описание на директивите на php.ini от ядрото

Този списък съдържа директивите на php.ini от ядрото, които могат да бъдат установени с цел конфигуриране на PHP. Директивите, които се обслужват от разширения са дадени и описани на страниците на съответните разширения. Например, информация относно директивите свързани с работа със сесии могат да бъдат намерени на страница Функции за сесии.

Настройки на Httpd

Настройки на Httpd
Име По подразбиране Модифицируемо Дневник на промените
async_send "0" PHP_INI_ALL  

Езикови настройки

Езикови и други консигурационни настройки
Име По подразбиране Модифицируемо Дневник на промените
short_open_tag "1" PHP_INI_ALL PHP_INI_ALL от PHP <= 4.0.0. PHP_INI_PERDIR от PHP < 5.3.0
asp_tags "0" PHP_INI_PERDIR PHP_INI_ALL от 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 от PHP <= 4.0.0.
expose_php "1" php.ini only  
zend.ze1_compatibility_mode "0" PHP_INI_ALL Достъпна от PHP 5.0.0. Премахната в PHP 5.3.0

Тук има кратко описание на конфигурационните директиви.

short_open_tag boolean

Указва дали е позволено използването на кратката форма (<? ?> ) за отварящия таг на PHP. Ако искате да използвате PHP в комбинация с XML, тряжва да забраните тази опция за да можете да използвате <?xml ?> . В противен случай трябва да го изведете с PHP, например <?php echo '<?xml version="1.0"'; ?> . Също така, ако е забранено, трябва да използвате пълната форма на отварящия PHP таг (<?php ?> ).

Забележка: Директивата засяга и кратката форма <?= , която е еквивалентна на <? echo . Използването на тази кратка форма изисква short_open_tag да бъде включена.

asp_tags boolean
Включва поддръжката на използваните в ASP тагове <% %>, като допълнение на обичайните тагове <?php ?>. Това включва краткия запис аз извеждане <%= $value %>. За повече информация вж. Излизане от HTML.
precision integer
Броя на значещите цифри на числата с плаваща запетая.
y2k_compliance boolean
Налагане на спазването на съвместимостта с 2000-та година (ще предизвика проблеми при несъвместими браузъри)
allow_call_time_pass_reference boolean

Указва дали да се изведе предупреждение, ако параметрите на функция са предадени по референция време на извикването и. Този метод е непрепоръчителен, и е най-вероятно да не се поддържа и в бъдещи версии на PHP/Zend. Препоръчителният метод за определяне кои параметри трябва да бъдат предадени по референция е това да се извършва в декларацията на функцията. Също така се препоръчва, да пробвате тази опция включена и изключена, и да се уверите, че скриптовете ви работят и в двата случая, за да сте сигурни, че ще работят и с бъдещи версии на езика (като ще бъде генерирано предупреждение всеки път, когато използвате тези възможности).

Предаването на параметри на функция по време на извикването и стана непрепоръчително с цел по-голяма прегледност на кода. Дадена функция може да промени параметрите си, по начин, който не е документиран, ако този параметър не е деклариран като предаван по референция. За да предотвратите тези странични ефекти, е по-добре да укажете точно кои параметри се предават по референция само в декларацията на функцията.

Вж. съшо Референции.

expose_php boolean

Указва дали PHP да се показва като инсталирано на сървъра (като добавя определен низ в хедъра на уеб сървъра). Това не застрашава сигурността по никакъв начин, но предоставя възможност да се разбере дали на сървъра е инсталирано PHP или не.

zend.ze1_compatibility_mode boolean

Активира режима на съвместимост със Zend Engine 1 (PHP 4). Тази промяна влияе на клонирането, преобразуването на типовете (обекти без свойства се преобразуват до FALSE или 0) и сравняването на обектите. В този режим обектите се предават по стойност, а не както е по подразбиране - по референция.

Вижте също раздела наречен Миграция от PHP 4 към PHP 5.

Ограничения на ресурсите

Ограничения на ресурсите
Име По подразбиране Модифицируемо Дневник на промените
memory_limit "128M" PHP_INI_ALL "8M" преди PHP 5.2.0, "16M" от PHP 5.2.0

Тук има кратко описание на конфигурационните директиви.

memory_limit integer

Тази директива установява максималното количество памет (в байтове), което даден скрипт може да използва. Посредством това се предотвратява използването на цялата достъпна памет на сървъра, от зле написани скриптове. Забележете, че за да премахнете ограничението за използването на паметта, трябва да установите тази директива в -1.

Прези PHP 5.2.1, с цел използването на тази директива, трябва тя да бъде активирана по време на компилация, посредством -enable-memory-limit. Това е необходимо и за да бъдат достъпни функциите memory_get_usage() и memory_get_peak_usage().

Когато се използва цяло число, стойността се отчита в байтове. Може да се използва също и краткото записване, съгласно описанието във FAQ.

Вж. също: max_execution_time.

Настройване на производителността

Настройване на производителността
Име По подразбиране Модифицируемо Дневник на промените
realpath_cache_size "16K" PHP_INI_SYSTEM Достъпна от PHP 5.1.0.
realpath_cache_ttl "120" PHP_INI_SYSTEM Достъпна от PHP 5.1.0.

Тук има кратко описание на конфигурационните директиви.

realpath_cache_size integer

Установява размера на realpath кеша, който ще се използва от PHP. Тази стойност трябва да е по-голяма в системи, при които PHP отваря множество файлове, с цел това да се отрази на количеството на извършените файлови операции.

realpath_cache_ttl integer

Периодът от време (в секунди) за което да се кешира realpath информацията за даден файл или директория. В системи при които рядко се променят файловете, стойността трябва да е по-голяма.

Работа с данни

Конфигурационни настройки за работа с данни
Име По подразбиране Модифицируемо Дневник на промените
track_vars "On" PHP_INI_??  
arg_separator.output "&" PHP_INI_ALL Достъпна от PHP 4.0.5.
arg_separator.input "&" PHP_INI_PERDIR Достъпна от PHP 4.0.5.
variables_order "EGPCS" PHP_INI_PERDIR PHP_INI_ALL от PHP <= 5.0.5.
request_order "" PHP_INI_SYSTEM|PHP_INI_PERDIR Достъпна от PHP 5.3.0
auto_globals_jit "1" PHP_INI_PERDIR Достъпна от PHP 5.0.0.
register_globals "0" PHP_INI_PERDIR PHP_INI_ALL от PHP <= 4.2.3.
register_argc_argv "1" PHP_INI_PERDIR PHP_INI_ALL от PHP <= 4.2.3.
register_long_arrays "1" PHP_INI_PERDIR Достъпна от PHP 5.0.0.
post_max_size "8M" PHP_INI_PERDIR PHP_INI_SYSTEM от PHP <= 4.2.3. Достъпна от PHP 4.0.3.
gpc_order "GPC" PHP_INI_ALL  
auto_prepend_file NULL PHP_INI_PERDIR PHP_INI_ALL от PHP <= 4.2.3.
auto_append_file NULL PHP_INI_PERDIR PHP_INI_ALL от 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 от PHP <= 4.2.3. Достъпна от PHP 4.1.0.
allow_webdav_methods "0" PHP_INI_PERDIR  

Тук има кратко описание на конфигурационните директиви.

track_vars boolean

Ако е активирана, променливите на обкръжението, GET, POST, бисквитките и сървърните променливи ще бъдат достъпни в асоциативните масиви $_ENV, $_GET, $_POST, $_COOKIE и $_SERVER.

Забележете, че от PHP 4.0.3, track_vars е винаги включена.

arg_separator.output string

Разделителят използван при URL-адресите генерирани от PHP, за разделяне на аргументите.

arg_separator.input string

Списък на разделителите използвани от PHP за прехвърляне на данните от URL-адреса към променливи.

Забележка: Всеки знак на тази директива се счита за разделител!

variables_order string

Установява реда на обработка на EGPCS (Environment, Get, Post, Cookie, и Server) променливите. Например, ако variables_order е установена в "SP", PHP ще създаде superglobals $_SERVER и $_POST, но няма да създаде $_ENV, $_GET, and $_COOKIE. Установяването на директивата в "" означава, че никакви superglobals няма да бъдат установени.

Ако непрепоръчителната директива register_globals е включена (премахната в PHP 6.0.0), variables_order ще определя реда на променливите ENV, GET, POST, COOKIE и SERVER, които са от глобалната област на действие. Така например, ако variables_order е установен в "EGPCS", register_globals е включена и са установени $_GET['action'] и $_POST['action'], $action ще приеме стойността на $_POST['action'], тъй като P е след G в примерната стойност на директивата.

Предупреждение

При CGI и при FastCGI SAPI-та $_SERVER се попълва и от стойности от обкръжението; S винаги е еквивалентно на ES независимо от поставянето на E някъде другаде в тази директива.

Забележка: Съдържанието и реда на $_REQUEST също зависи от тази директива.

request_order string

Тази директива описва реда в който PHP регистрира променливите GET, POST и Cookie в масива _REQUEST. Регистрацията се извършва от ляво на дясно, като по-новите стойности препокриват по-старите.

Ако директивата не е установена, за $_REQUEST променливите се използва стойността на variables_order.

auto_globals_jit boolean

Ако директивата е включена SERVER и ENV променливите се създават в момента на първата им употреба (Just In Time), а не в началото на изпълнението на скрипта. Ако тези променливи не се използват в скрипта, включването на тази директива ще доведе до увеличаване на производителността.

За да може да работи тази директива, директивите register_globals, register_long_arrays, и register_argc_argv трябва да бъдат изключени. От PHP 5.1.3 не е необходмо да е изключена директивата register_argc_argv.

register_globals boolean

Указва дали да бъдат регистрирани EGPCS (Environment, GET, POST, Cookie, Server) променливите като глобални променливи.

От » PHP 4.2.0, стойността по подразбиране на тази директива е off.

За повече информация, моля, прегледайте главата за сигурността от Употреба на register_globals.

Забележете, че register_globals не може да се установява по време на изпъление на скрипта (ini_set()). Въпреки това, ако хостингът ви позволява, можете да използвате .htaccess както е описано по-долу. Примерен код за .htaccess: php_flag register_globals off .

Забележка: register_globals зависи от директивата variables_order.

Предупреждение

Тази възможност е НЕПРЕПОРЪЧИТЕЛНА от PHP 5.3.0 и ПРЕМАХНАТА след PHP 6.0.0. Да се разчита на тази възможност е силно непрепоръчително.

register_argc_argv boolean
Казва на PHP дали да декларира argv и argc променливите (които биха съдържали GET-информацията). Вж. също command line. Тази директива е достъпна от PHP 4.0.0 и винаги е "била включена" преди това.
register_long_arrays boolean
Указва на PHP дали да регистрира непрепоръчителните предварително дефинирани променливи $HTTP_*_VARS. Когато е включена (както е по подразбиране), дългите предварително-дефинирани променливи, като например $HTTP_GET_VARS ще бъдат дефинирани. Ако не ги използвате е препоръчително да изключите тази директива, за по-голяма производителност. Вместо тях използвайте свръхглобалните масиви като $_GET. Тази директива е достъпна от PHP 5.0.0 и е премахнат от PHP 6.0.0.
post_max_size integer
Установява максималния позволен размер на POST данните. Тази настройка засяга и качването на файлове. За да могат да се качват големи файлове, стойността трябва да е по-голяма от тази на upload_max_filesize. Ако в конфигурационния скрипт е включено ограничение на паметта, memory_limit също влияе на качването на файлове. В общия случай memory_limit трябва да бъде по-голямо от post_max_size . Когато се използва цяло число, стойността се отчита в байтове. Може да се използва също и краткото записване, съгласно описанието във FAQ. Ако размера на данните изпратени по POST е по-голям от post_max_size, свръхглобалните променливи $_POST и $_FILES ще бъдат празни. Това може да се види по няколко начина, например като се подаде $_GET променлива към скрипт, който да обработи данните, например чрез <form action="edit.php?processed=1"> и след това се извърши проверка дали $_GET['processed'] е установена.
gpc_order string

Установява реда на обработката на GET/POST/COOKIE променливите. Стойността по подразбиране на тази директива е "GPC". Установяването и в "GP" например, ще накара PHP напълно да игнорира бисквитките и да препокрива всяка променлива от GET метода с променлива от POST-метода носеща същото име.

Забележка: Тази опция не е налична в PHP 4. Вместо нея използвайте variables_order.

auto_prepend_file string

Указва името на файла, който автоматично се анализира преди главният файл. Файлът се вмъква, все едно е вмъкнат посредством функция require(), така че, при вмъкването се използва include_path.

Специалната стойност none забранява автоматичното анализиране.

auto_append_file string

Указва името на файла, който автоматично се анализира след главният файл. Файлът се вмъква, все едно е вмъкнат посредством функция require(), така че, при вмъкването се използва include_path.

Специалната стойност none изключва автоматичното вмъкване за анализ.

Забележка: Ако изпълнението на скрипта е спряно с exit(), автоматично анализиране няма да се извърши.

default_mimetype string

default_charset string

От версия 4.0.0, PHP винаги извежда набора от знаци по подразбиране в заглавката Content-type. За да забраните изпращането на набора от знаци, просто я установете в празен низ.

always_populate_raw_post_data boolean

Винаги попълва $HTTP_RAW_POST_DATA със суровите данни предадени по POST. В противен случай, променливата се попълва само с неразпознатия MIME тип на данните. Въпреки това, предпочитаният метод за осъществяване на достъп до суровите POST данни е php://input. $HTTP_RAW_POST_DATA не е достъпна при enctype="multipart/form-data".

allow_webdav_methods boolean

Позволява работа с WebDAV http заявки в PHP-скриптове (например PROPFIND, PROPPATCH, MOVE, COPY и т.н). Директивата не съществува до PHP 4.3.2. Ако искате да вземете данните от заявка изпратена по post, трябва да установите и always_populate_raw_post_data.

See also: magic_quotes_gpc, magic_quotes_runtime, and magic_quotes_sybase.

Пътища и директории

Конфигурационни опции за пътища и директории
Име По подразбиране Модифицируемо Дневник на промените
include_path ".;/path/to/php/pear" PHP_INI_ALL  
doc_root NULL PHP_INI_SYSTEM  
user_dir NULL PHP_INI_SYSTEM  
extension_dir "/path/to/php" PHP_INI_SYSTEM  
extension NULL само php.ini  
cgi.check_shebang_line "1" PHP_INI_SYSTEM Достъпна от PHP 5.2.0.
cgi.fix_pathinfo "1" PHP_INI_SYSTEM Достъпна от PHP 4.3.0. PHP_INI_ALL преди PHP 5.2.1.
cgi.force_redirect "1" PHP_INI_SYSTEM Достъпна от PHP 4.2.0. PHP_INI_ALL преди PHP 5.2.1.
cgi.redirect_status_env NULL PHP_INI_SYSTEM Достъпна от PHP 4.2.0. PHP_INI_ALL преди PHP 5.2.1.
fastcgi.impersonate "0" PHP_INI_SYSTEM Достъпна от PHP 4.3.0. PHP_INI_ALL преди PHP 5.2.1.
cgi.rfc2616_headers "0" PHP_INI_ALL Достъпна от PHP 4.3.0.

Тук има кратко описание на конфигурационните директиви.

include_path string

Указва списъкът от директории, където require(), include(), fopen(), file(), readfile() и file_get_contents() ще търсят за файлове. Форматът е същият като променливата за системния път PATH: списък на директории, разделени с двоеточие при Юникс и точка и запетая при Уиндоус.

Example #1 include_path при Unix

include_path=".:/php/includes"

Example #2 include_path при Windows

include_path=".;c:\php\includes"

Употребата на . в пътя за включване ви позволява да извършите относителни включвания, като точката представлява текущата директория.

doc_root string

Главната директория на PHP на сървъра. Стойността и се използва само, ако не е празна. Ако PHP е конфигурирано с защитен режим, файлове извън тази директория не се обслужват. Ако PHP не е компилирано с FORCE_REDIRECT, трябва да установите doc_root, при положение, че сте стартирани PHP като CGI под който и да е уеб сървър (различен от IIS). Другият начин е да използвата cgi.force_redirect показана по-долу.

user_dir string

Наименованието на основната директория, използвана от потребителя като начална за PHP файловете, например public_html.

extension_dir string

Директорията в която PHP ще търси динамично-зареждаемите разширения. Вж. също: enable_dl, и dl().

extension string

Кои динамично зареждаеми се разширения да бъдат заредени при стартиране на PHP.

cgi.check_shebang_line boolean

Указва дали CGI PHP ще проверява за редове започващи с #! (shebang), в началото на стартирания скрипт. Този ред може да е нужен, ако скриптът може да се изпълни самостоятелно и с PHP CGI. В CGI режим PHP прескача този ред и игнорира съдържанието му, ако директивата е включена.

cgi.fix_pathinfo boolean

Осигурява реална поддръжка на PATH_INFO/PATH_TRANSLATED за CGI. Предишното поведение на PHP беше да установи PATH_TRANSLATED в SCRIPT_FILENAME, без да се съобразява с PATH_INFO. За повече информация относно PATH_INFO прегледайте CGI спецификацията. Ако тази директива е установена в 1, PHP CGI ще коригира пътищата, така, че да отговарят на спецификацията. Установяването и в 0, означава, че PHP ще се държи както преди. Стойността и по подразбиране е 0; Добре е да промените скриптовете си да използват SCRIPT_FILENAME вместо PATH_TRANSLATED.

cgi.force_redirect boolean

cgi.force_redirect е необходима, за да осигурите сигурно изпълнение на PHP като CGI под повечето уеб сървъри. Ако се остави недефинирана, PHP ще я включи по подразбиране. Можете да я изключите на своя собствена отговорност.

Забележка: За потребители работещи под Windows: Можете спокойно да изключите директивата при IIS, всъщност трябва да го направите. За да накарате OmniHTTPD и Xitami да заработят, трябва да изключите тази директива

cgi.redirect_status_env string

Ако cgi.force_redirect е включена и не работите под Apache или Netscape (iPlanet) уеб сървъри, може да има нужда да установите име на променливата от обкръжението, за която ще търси PHP, за да знае, че може да продължи с изпълнението.

Забележка: Установяването на тази променлива може да доведе до проблеми със сигурността, така че, първо разберете какво точно искате да направите.

fastcgi.impersonate string

FastCGI под IIS (при WINNT-базирани ОС) поддържа възможността да интерпретира ролята на лексемите на сигурността на извикващия клиент. Това позволява на IIS да дефинира контекст на сигурността, под който се изпълнява заявката. mod_fastcgi под Apache в момента не поддържа тази възможност (03/17/2002). Установете тази директива в 1, ако работите под IIS. Стойността й по подразбиране е 0.

cgi.rfc2616_headers int

Казва на PHP какъв тип заглавки да използва при изпращане на кода за HTTP отговор. Ако е установена в 0, PHP изпраща Status: заглавка, която се поддържа от Apache и други уеб сървъри. Ако опцията е установена в 1, PHP ще изпрати » RFC 2616-съвместима заглавка. Оставете я установена в 0, освен ако не знаете какво точно правите.

Качвания на файлове

Конфигурационни опции за качвания на файлове
Име По подразбиране Модифицируемо Дневник на промените
file_uploads "1" PHP_INI_SYSTEM PHP_INI_ALL от PHP <= 4.2.3. Достъпна от PHP 4.0.3.
upload_tmp_dir NULL PHP_INI_SYSTEM  
upload_max_filesize "2M" PHP_INI_PERDIR PHP_INI_ALL от PHP <= 4.2.3.

Тук има кратко описание на конфигурационните директиви.

file_uploads boolean

Дали са позволени HTTP качвания на файлове. Вж. също директивите upload_max_filesize, upload_tmp_dir и post_max_size.

Когато се използва цяло число, стойността се отчита в байтове. Може да се използва също и краткото записване, съгласно описанието във FAQ.
upload_tmp_dir string

Временната директория, която да се използва за съхраняване на файлове при качване. Трябва да бъде достъпна за запис, от потребителя от чието име е пуснато PHP. Ако не е указана, PHP ще използва стойността по подразбиране за системата.

upload_max_filesize integer

Максималният размер на файла за качване.

Когато се използва цяло число, стойността се отчита в байтове. Може да се използва също и краткото записване, съгласно описанието във FAQ.

Общи SQL

Общо SQL конфигурационни настройки
Име По подразбиране Модифицируемо Дневник на промените
sql.safe_mode "0" PHP_INI_SYSTEM  

Тук има кратко описание на конфигурационните директиви.

sql.safe_mode boolean

Ако са включени функциите за връзка с бази от данни, които имат указани стойности по подразбиране, ще използват тях, вместо предоставените аргументи. За да видите стойностите по подразбиране, прегледайте документацията на функциите за свързване към съответните бази от данни.


Директиви на php.ini
PHP Manual