https://haydenjames.io/understanding-php-memory_limit/ explains the memory_limit setting nicely.Опис на основните php.ini директиви
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Опис на основните php.ini директиви
Референца за `ini.core.php` со подобрена типографија и навигација.
Опис на јадрото php.ini directives
Оваа листа ги вклучува основните php.ini директиви што можете да ги поставите за да ја конфигурирате вашата PHP поставка. Директивите обработени од екстензии се наведени и детално опишани на соодветните страници со документација за екстензии; Информации за директивите за сесии, на пример, може да се најдат на страницата за сесии.
Забелешка:
Поставките што се прикажани овде се користат кога php.ini не е вчитан; вредностите за продукција и развој php.ini може да варираат.
Опции за јазик
| Име | Стандардно | Променливо | Дневник на промени |
|---|---|---|---|
| short_open_tag | "1" | INI_PERDIR |
|
| precision | "14" | INI_ALL |
|
| serialize_precision | "-1" | INI_ALL |
Пред PHP 7.1.0, стандардната вредност беше 17. |
| disable_functions | "" | INI_SYSTEM only |
|
| disable_classes | "" | php.ini only | |
| exit_on_timeout | "" | INI_ALL |
|
| expose_php | "1" | php.ini only | |
| hard_timeout | "2" | INI_SYSTEM |
Достапно од PHP 7.1.0. |
| zend.exception_ignore_args | "0" | INI_ALL |
Достапно од PHP 7.4.0 |
| zend.multibyte | "0" | INI_ALL |
|
| zend.script_encoding | NULL | INI_ALL |
|
| zend.detect_unicode | NULL | INI_ALL |
|
| zend.signal_check | "0" | INI_SYSTEM |
|
| zend.assertions | "1" | INI_ALL со ограничувања |
|
| zend.exception_string_param_max_len | "15" | INI_ALL |
Достапно од PHP 8.0.0. |
Еве кратко објаснување на директивите за конфигурација.
-
short_open_tagbool -
Му кажува на PHP дали кратката форма (
<? ?>) на PHP ознаката за отворање треба да биде дозволена. Ако сакате да користите PHP во комбинација со XML, можете да ја оневозможите оваа опција за да користите<?xml ?>вградено. Инаку, можете да го испечатите со PHP, на пример:<?php echo '<?xml version="1.0"?>'; ?>. Исто така, ако е оневозможено, мора да ја користите долгата форма на PHP ознаката за отворање (<?php ?>).Забелешка:
Оваа директива не влијае на кратенката
<?=, која е секогаш достапна. -
precisionint -
Бројот на значајни цифри прикажани во броеви со подвижна запирка.
-1значи дека ќе се користи подобрен алгоритам за заокружување на таквите броеви. -
serialize_precisionint -
Бројот на значајни цифри зачувани при серијализација на броеви со подвижна запирка.
-1значи дека ќе се користи подобрен алгоритам за заокружување на таквите броеви. -
expose_phpbool -
Го открива на светот дека PHP е инсталиран на серверот, што го вклучува и верзијата на PHP во HTTP заглавието (на пр. X-Powered-By: PHP/5.3.7).
-
disable_functionsstring -
Оваа директива дозволува одредени функции да бидат оневозможени. Таа прифаќа список на имиња на функции одделени со запирки. Од PHP 8.0.0, оневозможувањето на функција ја отстранува нејзината дефиниција, дозволувајќи му на корисникот да ја дефинира повторно. Пред PHP 8.0.0, оневозможувањето на функција само спречуваше повикување на функцијата.
Компатибилност внатрешни функции може да бидат оневозможени со оваа директива.
Кориснички дефинирани функции
се недопрени.
Оваа директива мора да биде поставена во php.ini. Не може да биде поставена во httpd.conf.
Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава
Оваа директива може да биде заобиколена и не треба да се смета за доволна мерка за безбедност за средини за споделен хостинг.
-
disable_classesstring -
Оваа директива дозволува одредени класи да бидат оневозможени. Таа прифаќа список на имиња на класи одделени со запирки. Оневозможувањето на класа само спречува инстанцирање на класата.
Само внатрешни класи може да бидат оневозможени со оваа директива. Кориснички дефинираните класи се недопрени.
Оваа директива мора да биде поставена во php.ini. Не може да биде поставена во httpd.conf.Ги ескејпува специјалните знаци во стринг за употреба во SQL изјаваОваа директива може да биде заобиколена и не треба да се смета за доволна мерка за безбедност за средини за споделен хостинг.
-
zend.assertionsint -
Кога е поставено на
1, кодот за тврдења ќе биде генериран и извршен (режим за развој). Кога е поставено на0, кодот за тврдења ќе биде генериран, но ќе биде прескокнат (неизвршен) при извршување. Кога е поставено на-1, кодот за тврдења нема да биде генериран, правејќи ги тврдењата нула-трошок (режим за производство).Забелешка:
Ако процес е започнат во режим за производство, zend.assertions не може да се промени при извршување, бидејќи кодот за тврдења не беше генериран.
Ако процесот е започнат во режим на развој, zend.assertions Ако процесот е започнат во режим на развој,
-1не може да се постави на -
zend.exception_string_param_max_lenint -
при извршување.
"0"and"1000000". -
hard_timeoutint -
Максимална должина на аргументите на низата во низи од траги на стек. Мора да биде помеѓу max_execution_time Кога времето на чекање поставено во
е достигнато, PHP runtime ќе ги уништи ресурсите грациозно. Ако нешто заглави додека ова се случува, тврдото време на чекање ќе отчукува за поставениот број на секунди. Кога ќе се достигне тврдото време на чекање, PHP ќе излезе неграциозно. Кога е поставено на 0, тврдото време на чекање никогаш нема да се активира.
Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unknown on line 0
-
zend.exception_ignore_argsbool -
Кога PHP ќе престане од тврдо време на чекање, ќе изгледа нешто вака:
-
zend.multibytebool -
Исклучува аргументи од трагите на стек генерирани од исклучоци.
Овозможува парсирање на изворни датотеки во мултибајтни кодови. Овозможувањето zend.multibyte е потребно за користење на кодови на знаци како SJIS, BIG5, итн. кои содржат специјални знаци во мултибајтни податоци од низи. Кодови компатибилни со ISO-8859-1 како UTF-8, EUC, итн. не бараат оваа опција.
-
zend.script_encodingstring -
Овозможувањето zend.multibyte бара екстензијата mbstring да биде достапна. Оваа вредност ќе се користи освен ако директивата не се појави на врвот на скриптата. Кога се користи кодирање некомпатибилно со ISO-8859-1, мора да се користат и zend.multibyte и zend.script_encoding.
Буквалните низи ќе бидат транслитерирани од zend.script_encoding до mbstring.internal_encoding, како да mb_convert_encoding() било повикано.
-
zend.detect_unicodebool -
Проверува за BOM (Byte Order Mark) и гледа дали датотеката содржи валидни мултибајтни знаци. Ова откривање се врши пред обработката на __halt_compiler(). Достапно само во Zend Multibyte режим.
-
zend.signal_checkbool -
За проверка на заменети ракувачи на сигнали при исклучување.
-
exit_on_timeoutbool -
Ова е директива само за Apache1 mod_php која го принудува Apache детето да излезе ако се случило време на чекање на извршување на PHP. Таквото време на чекање предизвикува внатрешен повик longjmp() во Apache1 што може да остави некои екстензии во некохерентна состојба. Со прекинување на процесот, сите заостанати заклучувања или меморија ќе бидат исчистени.
Ограничувања на ресурси
| Име | Стандардно | Променливо | Дневник на промени |
|---|---|---|---|
| memory_limit | "128M" | INI_ALL |
Еве кратко објаснување на директивите за конфигурација.
-
memory_limitint -
Ова ја поставува максималната количина на меморија во бајти што скриптата може да ја додели. Ова помага да се спречат лошо напишани скрипти да ја потрошат целата достапна меморија на серверот. Имајте предвид дека за да нема ограничување на меморијата, поставете ја оваа директива на
Кога еден int се користи, вредноста се мери во бајти. Кратенка нотација, како што е опишано во овој ЧПП, исто така може да се користи.-1.
. Достапно само под CLI SAPI. max_execution_time.
Оптимизација на перформансите
| Име | Стандардно | Променливо | Дневник на промени |
|---|---|---|---|
| realpath_cache_size | "4M" | INI_SYSTEM |
Пред PHP 7.0.16 и 7.1.2, стандардното беше "16K" |
| realpath_cache_ttl | "120" | INI_SYSTEM |
Забелешка:
Пронајдете и отворете ја конфигурациската датотека на Apache. Стандардно, локацијата е како што следува: open_basedir will disable realpath кешот.
Еве кратко објаснување на директивите за конфигурација.
-
realpath_cache_sizeint -
Ја одредува големината на realpath кешот што ќе го користи PHP. Оваа вредност треба да се зголеми на системи каде PHP отвора многу датотеки, за да се одрази количината на извршени операции со датотеки.
Големината претставува вкупниот број на бајти во складираните низи на патеки, плус големината на податоците поврзани со записот во кешот. Ова значи дека за да се складираат подолги патеки во кешот, големината на кешот мора да биде поголема. Оваа вредност не го контролира директно бројот на различни патеки што можат да се кешираат.
Потребната големина за податоците од записот во кешот зависи од системот.
-
realpath_cache_ttlint -
Времетраење (во секунди) за кое ќе се кешираат realpath информациите за дадена датотека или директориум. За системи со ретко менувачки датотеки, размислете за зголемување на вредноста.
Ракување со податоци
| Име | Стандардно | Променливо | Дневник на промени |
|---|---|---|---|
| arg_separator.output | "&" | INI_ALL |
|
| arg_separator.input | "&" | INI_PERDIR |
|
| variables_order | "EGPCS" | INI_PERDIR |
|
| request_order | "" | INI_PERDIR |
|
| auto_globals_jit | "1" | INI_PERDIR |
|
| register_argc_argv | "1" | INI_PERDIR |
|
| enable_post_data_reading | "1" | INI_PERDIR |
|
| post_max_size | "8M" | INI_PERDIR |
|
| auto_prepend_file | NULL | INI_PERDIR |
|
| auto_append_file | NULL | INI_PERDIR |
|
| default_mimetype | "text/html" | INI_ALL |
|
| default_charset | "UTF-8" | INI_ALL |
|
| input_encoding | "" | INI_ALL |
|
| output_encoding | "" | INI_ALL |
|
| internal_encoding | "" | INI_ALL |
Еве кратко објаснување на директивите за конфигурација.
-
arg_separator.outputstring -
Сепараторот што се користи во URL-ите генерирани од PHP за одвојување на аргументи.
-
arg_separator.inputstring -
Список на сепаратор(и) што ги користи PHP за парсирање на влезните URL-и во променливи.
Забелешка:
Секој карактер во оваа директива се смета како разделувач!
-
variables_orderstring -
Го поставува редоследот на EGPCS (
Eнвиронмент,Gет,Pост,Cуки, иSпарсирање на променливите. На пример, ако variables_order е поставено на"SP"тогаш PHP ќе го креира superglobals $_SERVER and $_POST, но нема да го креира $_ENV, $_GETПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во $_COOKIE. Поставувањето на "" значи дека нема superglobals ќе биде поставено.Ги ескејпува специјалните знаци во стринг за употреба во SQL изјаваИ во CGI и во FastCGI SAPIs, $_SERVER исто така се пополнува со вредности од околината;
Sсекогаш е еквивалентно наESбез оглед на поставувањето наEна друго место во оваа директива.Забелешка:
Содржината и редоследот на $_REQUEST исто така се засегнати од оваа директива.
-
request_orderstring -
Оваа директива го опишува редоследот по кој PHP ги регистрира GET, POST и Cookie променливите во _REQUEST низата. Регистрацијата се врши од лево надесно, новите вредности ги надминуваат постарите вредности.
Ако оваа директива не е поставена, variables_order се користи за $_REQUEST contents.
Имајте предвид дека стандардната дистрибуција php.ini датотеките не содржат
'C'за колачиња, поради безбедносни причини. -
auto_globals_jitbool -
Кога е овозможено, променливите SERVER, REQUEST и ENV се креираат кога првпат ќе се користат (Just In Time) наместо кога скриптата започнува. Ако овие променливи не се користат во скрипта, оваа директива ќе резултира со подобрување на перформансите.
Ги ескејпува специјалните знаци во стринг за употреба во SQL изјаваУпотребата на променливите SERVER, REQUEST и ENV се проверува за време на компилацијата, така што нивното користење преку на пр. (низа) нема да предизвика нивна иницијализација.
-
register_argc_argvbool - Му кажува на PHP дали да ги декларира променливите argv & argc (кои би содржеле информации за GET). Види исто така командна линија.
-
enable_post_data_readingbool - Оневозможувањето на оваа опција предизвикува $_POST and $_FILES not да се пополни. Единствениот начин за читање на postdata тогаш ќе биде преку php://input stream wrapper. Ова може да биде корисно за проксирање барања или за обработка на POST податоци на начин што е ефикасен во однос на меморијата.
-
post_max_sizeint -
Поставува максимална големина на POST податоци. Оваа поставка влијае и на прикачувањето датотеки. За прикачување големи датотеки, оваа вредност мора да биде поголема од upload_max_filesize.
Генерално, гледано,
memory_limit треба да биде поголемо од
post_max_size. Кога еден int се користи, вредноста се мери во бајти. Кратенка нотација, како што е опишано во овој ЧПП, исто така може да се користи. Ако големината на POST податоците е поголема од post_max_size, на $_POST and $_FILES superglobals се празни. Ова може да се следи на различни начини, на пр. со поминување на $_GET променлива на скриптата што ги обработува податоците, т.е.<form action="edit.php?processed=1">, и потоа проверување дали $_GET['processed'] е поставено.Забелешка:
PHP дозволува кратенки за бајт вредности, вклучувајќи K (кило), M (мега) и G (гига). PHP автоматски ќе ги направи конверзиите ако користите некоја од нив. Внимавајте да не го надминете лимитот од 32-битен потпишан цел број (ако користите 32-битни верзии) бидејќи тоа ќе предизвика неуспех на вашата скрипта.
Дневник на промени за post_max_sizeВерзија = NULL 5.3.4 post_max_size= 0 нема да го оневозможи лимитот кога типот на содржината е application/x-www-form-urlencoded или не е регистриран со PHP.5.3.2 , 5.2.12 Дозволете неограничена големина на објава со поставување post_max_sizeна 0. -
auto_prepend_filestring -
Ја специфицира името на датотека што автоматски се парсира пред главната датотека. Датотеката се вклучува како да била повикана со require функцијата, така што include_path се користи.
Специјалната вредност
noneја оневозможува автоматската претходна вклучување. -
auto_append_filestring -
Ја специфицира името на датотека што автоматски се парсира по главната датотека. Датотеката се вклучува како да била повикана со require функцијата, така што include_path се користи.
Специјалната вредност
noneја оневозможува автоматската завршна вклучување.Забелешка: Ако скриптата заврши со exit(), автоматското завршно вклучување ќе not occur.
-
default_mimetypestring -
Стандардно, PHP ќе прикаже медиумски тип користејќи го заглавието Content-Type. За да го оневозможите ова, едноставно поставете го на празно.
Вградениот стандарден медиумски тип на PHP е поставен на text/html.
-
default_charsetstring -
"UTF-8" е стандардната вредност и нејзината вредност се користи како стандардно кодирање на знаци за htmlentities(), html_entity_decode() and htmlspecialchars() ако
encodingпараметарот е изоставен. Вредноста наdefault_charsetисто така ќе се користи за поставување на стандардниот сет на знаци за iconv опциите за конфигурација се непоставени, и заiconv.input_encoding,iconv.output_encodingandiconv.internal_encodingопцијата за конфигурација е непоставена. mbstring опциите за конфигурација се непоставени, и заmbstring.http_inputmbstring.http_outputmbstring.internal_encodingСите верзии на PHP ќе ја користат оваа вредност како сет на знаци во стандардното заглавие Content-Type испратено од PHP ако заглавието не е препишано со повик доСите верзии на PHP ќе ја користат оваа вредност како charset во стандардниот Content-Type заглавие испратено од PHP ако заглавието не е префрлено со повик до header().
Поставување
default_charsetна празна вредност не се препорачува. -
input_encodingstring -
Оваа поставка се користи за модули со повеќе бајти како mbstring и iconv. Стандардно е празно.
-
output_encodingstring -
Оваа поставка се користи за модули со повеќе бајти како mbstring и iconv. Стандардно е празно.
-
internal_encodingstring -
Оваа поставка се користи за модули со повеќе бајти како mbstring и iconv. Стандардно е празно. Ако е празно, default_charset се користи.
Патеки и директориуми
| Име | Стандардно | Променливо | Дневник на промени |
|---|---|---|---|
| include_path | ".;/path/to/php/pear" | INI_ALL |
|
| open_basedir | NULL | INI_ALL |
|
| doc_root | NULL | INI_SYSTEM |
|
| user_dir | NULL | INI_SYSTEM |
|
| user_ini.cache_ttl | "300" | INI_SYSTEM |
|
| user_ini.filename | ".user.ini" | INI_SYSTEM |
|
| extension_dir | "/path/to/php" | INI_SYSTEM |
|
| extension | NULL | php.ini only | |
| zend_extension | NULL | php.ini only | |
| cgi.check_shebang_line | "1" | INI_SYSTEM |
|
| cgi.discard_path | "0" | INI_SYSTEM |
|
| cgi.fix_pathinfo | "1" | INI_SYSTEM |
|
| cgi.force_redirect | "1" | INI_SYSTEM |
|
| cgi.nph | "0" | INI_SYSTEM |
|
| cgi.redirect_status_env | NULL | INI_SYSTEM |
|
| cgi.rfc2616_headers | "0" | INI_ALL |
|
| fastcgi.impersonate | "0" | INI_SYSTEM |
|
| fastcgi.logging | "1" | INI_SYSTEM |
Еве кратко објаснување на директивите за конфигурација.
-
include_pathstring -
Наведува список на директориуми каде што require, include, fopen(), file(), readfile() and file_get_contents() функциите бараат датотеки. Форматот е сличен на системскиот PATH променлива на опкружувањето: список на директориуми одделени со двоеточие во Unix или точка и запирка во Windows.
PHP ги смета сите записи во патеката за вклучување одделно при барање датотеки за вклучување. Ќе ја провери првата патека, и ако не ја најде, ќе ја провери следната патека, додека не ја лоцира вклучената датотека или не врати со
E_WARNINGилиE_ERROR. Можете да ја измените или поставите вашата патека за вклучување во време на извршување користејќи set_include_path().Пример #1 Unix include_path
include_path=".:/php/includes"
Пример #2 Windows include_path
include_path=".;c:\php\includes"
Не сите аргументи треба да бидат промовирани. Можно е да се мешаат промовирани и непромовирани аргументи, во која било нарачка. Промовираните аргументи немаат влијание врз кодот што го повикува конструкторот.
.во патеката за вклучување овозможува релативни вклучувања бидејќи значи тековната директорија. Сепак, поефикасно е експлицитно да се користиinclude './file'отколку PHP секогаш да ја проверува тековната директорија за секое вклучување.Забелешка:
ENVпроменливите се исто така достапни во .ini датотеките. Како такви, можно е да се повика домашната директорија користејќи${LOGIN}and${USER}.Променливите на околината може да варираат помеѓу Server API бидејќи тие средини може да се разликуваат.
Example #3 Unix include_path using ${USER} env variable
include_path = ".:${USER}/pear/php" -
open_basedirstring -
Променливите на околината може да се разликуваат помеѓу серверските API-ња бидејќи тие средини може да се различни.
Ограничете ги датотеките до кои може да пристапи PHP до наведеното дрво на директориуми, вклучувајќи ја и самата датотека. include, или fopen()Кога скрипта се обидува да пристапи до датотечниот систем, на пример користејќи open_basedir.
open_basedir , локацијата на датотеката се проверува. Кога датотеката е надвор од наведеното дрво на директориуми, PHP ќе одбие да пристапи до неа. Сите симболични врски се решаваат, така што не е можно да се избегне ова ограничување со симболична врска. Ако датотеката не постои, тогаш симболичната врска не можеше да се реши и името на датотеката се споредува со (решена)
MySQLможе да влијае на повеќе од само функциите на датотечниот систем; на пример, акоmysqlndе конфигуриран да користиLOAD DATA INFILEдрајвери, open_basedirќе биде засегнат одopen_basedir. Голем дел од проширената функционалност на PHP користиСпецијалната вредност
.на овој начин. chdir().индицира дека работната директорија на скриптата ќе се користи како основна директорија. Ова е, сепак, малку опасно бидејќи работната директорија на скриптата може лесно да се промени со httpd.conf, open_basedir Во може да се исклучи (на пр. за некои виртуелни хостови) на ист начин
php_admin_value open_basedir none".како и секој друг конфигурациски директив со " open_basedir Под Windows, одделете ги директориумите со точка-запирка. На сите други системи, одделете ги директориумите со двоеточие. Како модул на Apache,
патеките од родителските директориуми сега автоматски се наследуваат. open_basedir Ограничувањето специфицирано со
е име на директориум, а не префикс.
Забелешка: open_basedir може да се заостри во текот на извршувањето. Ова значи дека ако open_basedir е поставен на
/www/in php.ini скрипта може да ја заостри конфигурацијата на/www/tmp/во текот на извршувањето со ini_set(). Кога се наведуваат неколку директориуми, можете да го користитеPATH_SEPARATORконстанта како разделувач без оглед на оперативниот систем. Од PHP 8.3.0, open_basedir веќе не прифаќа патеки што содржат родителска директорија (..) кога е поставено во текот на извршувањето со користење на ini_set().Забелешка:
Користењето на open_basedir ќе го постави realpath_cache_size to
0и затоа disable realpath кешот.Безбедност: стандардниот сет на знациopen_basedirе само дополнителна мрежа за безбедност, која во никој случај не е сеопфатна и затоа не може да се потпре на неа кога е потребна безбедност. -
doc_rootstring -
„корен директориум“ на PHP на серверот. Се користи само ако не е празно. Ако PHP не е компајлиран со FORCE_REDIRECT, вие should поставете doc_root ако го извршувате PHP како CGI под кој било веб-сервер (освен IIS). Алтернативата е да се користи cgi.force_redirect конфигурацијата подолу.
-
user_ini.cache_ttlint -
-
user_ini.filenamestring -
-
user_dirstring -
Основното име на директориумот што се користи во домашната директорија на корисникот за PHP датотеки, на пример public_html .
-
extension_dirstring -
Во кој директориум PHP треба да бара динамички вчитувачки екстензии. Се препорачува да се специфицира апсолутна патека. Погледнете исто така: enable_dlПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во dl().
-
extensionstring -
Кои динамички вчитувачки екстензии да се вчитаат кога PHP стартува.
-
zend_extensionstring -
Име на динамички вчитувачка Zend екстензија (на пример XDebug) што треба да се вчита кога PHP стартува.
-
cgi.check_shebang_linebool -
Контролира дали CGI PHP проверува за редови што почнуваат со
#!(shebang) на врвот на скриптата што се извршува. Оваа линија можеби ќе биде потребна ако скриптата поддржува извршување и како самостојна скрипта и преку PHP CGI. PHP во CGI режим ја прескокнува оваа линија и ја игнорира нејзината содржина ако овој директив е вклучен. -
cgi.discard_pathbool -
Ако ова е овозможено, PHP CGI бинарниот може безбедно да се постави надвор од веб дрвото и луѓето нема да можат да ја заобиколат .htaccess безбедноста.
-
cgi.fix_pathinfobool -
Обезбедува real
PATH_INFO/PATH_TRANSLATEDподдршка за CGI. Претходното однесување на PHP беше да се поставиPATH_TRANSLATEDtoSCRIPT_FILENAME, и да не разбира штоPATH_INFOе. За повеќе информации заPATH_INFO, видете го CGI спецификации. Поставувањето на ова на1ќе предизвика PHP CGI да ги поправи своите патеки за да се усогласи со спецификацијата. Поставката нула предизвикува PHP да се однесува како порано. Вклучено е стандардно. Треба да ги поправите вашите скрипти за да користитеSCRIPT_FILENAMEотколкуPATH_TRANSLATED. -
cgi.force_redirectbool -
cgi.force_redirect е неопходен за обезбедување безбедност при стартување на PHP како CGI под повеќето веб-сервери. Ако остане недефинирано, PHP го вклучува ова стандардно. Можете да го исклучите на ваш сопствен ризик.
Забелешка:
Корисници на Windows: Кога го користите IIS, оваа опција must може да се исклучи. Истото важи и за OmniHTTPD или Xitami.
-
cgi.nphbool -
Ако cgi.nph е овозможено, ќе го присили cgi секогаш да испраќа Статус: 200 со секое барање.
-
cgi.redirect_status_envstring -
Ако cgi.force_redirect е вклучено, а не работите под веб-сервери Apache или Netscape (iPlanet), вие may треба да се постави име на променлива на опкружувањето што PHP ќе ја бара за да знае дека е во ред да се продолжи со извршување.
Забелешка:
Поставување на оваа променлива may предизвика безбедносни проблеми, прво знајте што правите.
-
cgi.rfc2616_headersbool -
Му кажува на PHP каков тип на заглавија да користи при испраќање на HTTP код за одговор. Ако е оневозможено, PHP испраќа » RFC 3875 "Status:" заглавие што е поддржано од Apache и други веб-сервери. Кога оваа опција е овозможена, PHP ќе испрати » RFC 2616 усогласени заглавија.
Ако оваа опција е овозможена и работите со PHP во CGI опкружување (на пр. PHP-FPM), не треба да користите стандардни HTTP заглавија за статус одговор во стилот на RFC 2616, наместо тоа треба да ги користите нивните еквиваленти од RFC 3875, на пр. наместо header("HTTP/1.0 404 Not found"); треба да користите header("Status: 404 Not Found");
Оставете го оневозможено освен ако не знаете што правите.
-
fastcgi.impersonatebool -
FastCGI под IIS (на оперативен систем базиран на WINNT) ја поддржува можноста за имитирање на безбедносни токени на повикувачкиот клиент. Ова му овозможува на IIS да го дефинира безбедносниот контекст под кој се извршува барањето. mod_fastcgi под Apache моментално не ја поддржува оваа функција (17.03.2002) Овозможете ако работите под IIS. Стандардно е оневозможено.
-
fastcgi.loggingbool -
Вклучува SAPI логирање при користење на FastCGI. Стандардно е да се овозможи логирање.
Подигнување датотеки
| Име | Стандардно | Променливо | Дневник на промени |
|---|---|---|---|
| file_uploads | "1" | INI_SYSTEM |
|
| upload_tmp_dir | NULL | INI_SYSTEM |
|
| max_input_nesting_level | 64 | INI_PERDIR |
|
| max_input_vars | 1000 | INI_PERDIR |
|
| upload_max_filesize | "2M" | INI_PERDIR |
|
| max_file_uploads | 20 | INI_PERDIR |
Еве кратко објаснување на директивите за конфигурација.
-
file_uploadsbool -
Дали да се дозволат HTTP подигнувања на датотеки. Погледнете исто така upload_max_filesize, upload_tmp_dirПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во post_max_size directives.
-
upload_tmp_dirstring -
Привремената директориум што се користи за складирање датотеки при подигнување датотеки. Мора да биде запишлив од корисникот под кој работи PHP. Ако не е наведен, PHP ќе го користи системскиот стандард.
Ако директориумот наведен овде не може да се запише, PHP се враќа на системската стандардна привремена директорија. Ако open_basedir е вклучено, тогаш системската стандардна директорија мора да биде дозволена за да успее поставувањето.
-
upload_max_filesizeint -
Максималната големина на поставена датотека.
post_max_size мора да биде поголема од оваа вредност.
Кога еден int се користи, вредноста се мери во бајти. Кратенка нотација, како што е опишано во овој ЧПП, исто така може да се користи. -
max_file_uploadsint -
Максималниот број на датотеки што може да се постават истовремено. Полетата за поставување оставени празни при поднесување не се бројат кон ова ограничување.
Општ SQL
| Име | Стандардно | Променливо | Дневник на промени |
|---|---|---|---|
| sql.safe_mode | "0" | INI_SYSTEM |
Отстрането од PHP 7.2.0 |
Еве кратко објаснување на директивите за конфигурација.
-
sql.safe_modebool -
Ако е вклучено, функциите за поврзување со базата на податоци што специфицираат стандардни вредности ќе ги користат тие вредности наместо какви било аргументи дадени од корисникот. За детали за стандардните вредности, видете ја документацијата за релевантните функции за поврзување.
Ги ескејпува специјалните знаци во стринг за употреба во SQL изјаваПретходната порака за грешка REMOVED од PHP 7.2.0.
Специфично за Windows
| Име | Стандардно | Променливо | Дневник на промени |
|---|---|---|---|
| windows.show_crt_warning | "0" | INI_ALL |
Еве кратко објаснување на директивите за конфигурација.
-
windows.show_crt_warningbool -
Оваа директива ги прикажува предупредувањата на Windows CRT кога е овозможено.
Белешки од корисници 6 белешки
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."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. LeoNote 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.