https://haydenjames.io/understanding-php-memory_limit/ explains the memory_limit setting nicely.ãã®ãªã¹ãã«ã¯ãPHPãèšå®ããéã«äœ¿çšå¯èœãªã³ã¢ php.ini ãã£ã¬ã¯ãã£ãã å«ãŸããŠããŸããæ¡åŒµã¢ãžã¥ãŒã«ã«ããåŠçããããã£ã¬ã¯ãã£ãã¯ãããããã® æ¡åŒµã¢ãžã¥ãŒã«ã®ããã¥ã¡ã³ãããŒãžã«ãªã¹ããšè©³çްãèšè¿°ãããŠããŸãã äŸãã°ãã»ãã·ã§ã³çšãã£ã¬ã¯ãã£ãã«é¢ããæ å ±ã¯ã ã»ãã·ã§ã³ã®ããŒãžã«ãããŸãã
泚æ:
ãããã®ããã©ã«ãå€ã¯ã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 ã®ã¿ |
 |
| disable_classes | "" | php.ini ã®ã¿ | PHP 8.5.0 以éã¯åé€ãããŠããŸãã |
| exit_on_timeout | "" | INI_ALL |
 |
| expose_php | "1" | php.ini ã®ã¿ |  |
| 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_tag
bool
PHP ã¿ã°ã®ççž®å (<? ?>) ã䜿çš
å¯èœã«ãããã©ãããèšå®ããŸããPHPãXMLãšçµã¿åãããŠçšãã
å Žåã¯ã<?xml ?>ããã¡ã€ã«äžã§çš
ããããã«ãã®ãªãã·ã§ã³ããªãã«ããå¿
èŠããããŸãããªã³ã«ã
ãå Žåã«PHPã§XMLãåºåããã«ã¯ãäŸãã°ã次ã®ããã«ããŸãã
<?php echo '<?xml version="1.0"?>'; ?>
ããããªãã«ããå Žåãé·ãæ¹ã®åœ¢åŒã®ã¿ã°
(<?php ?>)ã䜿çšããå¿
èŠããããŸãã
泚æ:
ããã¯ã
<?=èšæ³ã«åœ±é¿ãäžããŸãããåžžã«æå¹ãšãªããŸãã
precision
int
-1 ã¯ãæ°å€ãäžžããéã«æ¡åŒµã¢ã«ãŽãªãºã ãçšããããšãæå³ããŸãã
serialize_precision
int
-1 ã¯ãæ°å€ãäžžããéã«æ¡åŒµã¢ã«ãŽãªãºã ãçšããããšãæå³ããŸãã
expose_php
bool
PHP ããµãŒããŒã«ã€ã³ã¹ããŒã«ãããŠããããšãå šäžçã«æããPHP ã®ããŒãžã§ã³ã HTTP ãããã«å«ããŸã (X-Powered-By: PHP/5.3.7 ãªã©)ã
disable_functions
string
ãã®ãã£ã¬ã¯ãã£ãã¯è¿åå¯èœã§ãããå ±æãã¹ãã£ã³ã°ç°å¢ã«ããã ååãªã»ãã¥ãªãã£å¯Ÿçãšã¯ã¿ãªãã¹ãã§ã¯ãããŸããã
disable_classes
string
ãã®ãã£ã¬ã¯ãã£ãã¯è¿åå¯èœã§ãããå ±æãã¹ãã£ã³ã°ç°å¢ã«ããã ååãªã»ãã¥ãªãã£å¯Ÿçãšã¯ã¿ãªãã¹ãã§ã¯ãããŸããã
ãã®æ©èœã¯ PHP 8.5.0 ã§ åé€ ãããŸããã
zend.assertions
int
1 ã«ãããšãã¢ãµãŒã·ã§ã³ã®ã³ãŒããçæããŠå®è¡ããŸã (éçºã¢ãŒã)ã
0 ã«ãããšãã¢ãµãŒã·ã§ã³ã®ã³ãŒãã¯çæããŸããå®è¡æã«ã¯ã¹ãããããŸã (å®è¡ããŸãã)ã
-1 ã«ãããšãã¢ãµãŒã·ã§ã³ã®ã³ãŒããçæãããã¢ãµãŒã·ã§ã³ã®ã³ã¹ãããŒãã«ãªããŸã (å®éçšã¢ãŒã)ã
泚æ:
å®éçšã¢ãŒãã§éå§ããããã»ã¹ã§ã¯ãzend.assertions ãå®è¡æã«å€æŽããããšã¯ã§ããŸãããã¢ãµãŒã·ã§ã³ã®ã³ãŒããçæãããŠããªãããã§ãã
éçºã¢ãŒãã§éå§ããããã»ã¹ã§ã¯ãzend.assertions ãå®è¡æã«
-1ã«å€æŽããããšã¯ã§ããŸããã
zend.exception_string_param_max_len
int
"0" ãš "1000000" ã®éã§ãªããã°ãããŸããã
hard_timeout
int
max_execution_time ã§èšå®ãããã¿ã€ã ã¢ãŠãã«éãããšã PHPã©ã³ã¿ã€ã ã¯ãªãœãŒã¹ãgracefulã«éæŸããŸãã ãªãœãŒã¹ãéæŸããåŠçãäœããã®åå ã§æ¢ãŸã£ãŠããŸã£ãå Žåã hard_timeout ã®ã«ãŠã³ããããã§èšå®ããç§æ°è¡ãããŸãã hard_timeout ã®ã¿ã€ã ã¢ãŠãã«éãããšã PHP ã¯gracefulã«ãªãœãŒã¹ãéæŸããã«çµäºããŸãã ãã®å€ã 0 ã«èšå®ãããšããã®æ©èœã¯ç¡å¹ã«ãªããŸãã
PHP ã hard timeout ã§åæ¢ãããšã 以äžã®ãããªã¡ãã»ãŒãžãæ®ãã§ãããã
Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unknown on line 0
zend.exception_ignore_args
bool
äŸå€çµç±ã§çæãããã¹ã¿ãã¯ãã¬ãŒã¹ãããåŒæ°ãé€å€ããŸãã
zend.multibyte
bool
ãã«ããã€ããšã³ã³ãŒãã£ã³ã°ã§æžããããœãŒã¹ãã¡ã€ã«ãããŒã¹ã§ããããã«ããŸãã zend.multibyte ãæå¹ã«ããªããšããã«ããã€ãæåããŒã¿ã®äžã«ç¹æ®æåãå«ããšã³ã³ãŒãã£ã³ã° (SJIS ã BIG5 ãªã©) ã䜿ããŸããã ISO-8859-1 äºæã®ãšã³ã³ãŒãã£ã³ã°ã§ãã UTF-8 ã EUC ãªã©ã䜿ãå Žåã¯ããã®ãªãã·ã§ã³ã¯äžèŠã§ãã
zend.multibyte ãæå¹ã«ãããå Žåã¯ãmbstring æ¡åŒµã¢ãžã¥ãŒã«ãæå¹ã«ããªããã°ãããŸããã
zend.script_encoding
string
ãã®å€ã䜿ãã®ã¯ã declare(encoding=...) ãã£ã¬ã¯ãã£ããã¹ã¯ãªããã®å é ã«ååšããªãå Žåã§ãã ISO-8859-1 éäºæã®ãšã³ã³ãŒãã£ã³ã°ã䜿ãå Žåã¯ã zend.multibyte ãš zend.script_encoding ãäž¡æ¹ãšãæå®ããå¿ èŠããããŸãã
ãªãã©ã«æååã¯ãzend.script_encoding ãã mbstring.internal_encoding ã«å€æãããŸãã mb_convert_encoding() ãåŒã°ãããšããšåãã§ãã
zend.detect_unicode
bool
BOM (Byte Order Mark) ã調ã¹ã ãã¡ã€ã«ãæå¹ãªãã«ããã€ãæåãå«ããã©ããã確èªããŸãã ãã®æ€åºã¯ã __halt_compiler() ã®åŠçããåã«è¡ãããŸãã Zend Multibyte ã¢ãŒãã§ã®ã¿å©çšå¯èœã§ãã
zend.signal_check
bool
眮ãæããããã·ã°ãã«ãã³ãã©ããã·ã£ããããŠã³æã«ãã§ãã¯ããŸãã
exit_on_timeout
bool
ãã㯠Apache1 ã® mod_php ã ãã§äœ¿ããé ç®ã§ãPHP ã®å®è¡ã¿ã€ã ã¢ãŠããçºçãããšãã« Apache ã®åããã»ã¹ã匷å¶çµäºãããŸãããã®ã¿ã€ã ã¢ãŠããããããš Apache1 ã®å éšã§ longjmp() ãã³ãŒã«ããããã®çµæãšããŠããã€ãã®æ¡åŒµã¢ãžã¥ãŒã«ãäžè²«æ§ãæ¬ ãç¶æ ã«ãªã£ãŠããŸããŸãã ããã»ã¹ã匷å¶çµäºãããããšã§ãæªåŠçã®ããã¯ãã¡ã¢ãªã®åŸå§æ«ãè¡ããŸãã
| åå | ããã©ã«ã | 倿Žå¯èœ | 倿Žå±¥æŽ |
|---|---|---|---|
| memory_limit | "128M" | INI_ALL |
 |
以äžã«èšå®ãã£ã¬ã¯ãã£ãã«é¢ãã ç°¡åãªèª¬æã瀺ããŸãã
memory_limit
int
ã¹ã¯ãªããã確ä¿ã§ããæå€§ã¡ã¢ãªããã€ãæ°ã§æå®ããŸãããã®åœä»€ã¯ã
æ£ããæžãããŠããªãã¹ã¯ãªããããµãŒããŒã®ã¡ã¢ãªãé£ãã€ã¶ãããšã鲿¢ããã®ã«åœ¹ç«ã¡ãŸãã
ããã䜿çšå¯èœã¡ã¢ãªã«å¶éãèšããããªãå Žåã¯ã
ããã« -1 ãæå®ããŠãã ããã
max_execution_time ãåç §ãã ããã
| åå | ããã©ã«ã | 倿Žå¯èœ | 倿Žå±¥æŽ |
|---|---|---|---|
| realpath_cache_size | "4M" | INI_SYSTEM |
PHP 7.0.16 ããã³ 7.1.2 ããåã®ããŒãžã§ã³ã§ã¯ã
ããã©ã«ãå€ã¯ "16K" ã§ããã
|
| realpath_cache_ttl | "120" | INI_SYSTEM |
 |
泚æ:
open_basedir ã䜿çšãããšã realpath ãã£ãã·ã¥ã disable ã«ãããŸãã
以äžã«èšå®ãã£ã¬ã¯ãã£ãã«é¢ãã ç°¡åãªèª¬æã瀺ããŸãã
realpath_cache_size
int
PHP ã䜿çšãã realpath ãã£ãã·ã¥ã®å€§ãããèšå®ããŸãã PHP ã§å€§éã«ãã¡ã€ã«ããªãŒãã³ããéã«ã ãã®å€ã倧ããããããšã«ãã£ãŠãã¡ã€ã«æäœã®ããã©ãŒãã³ã¹ã åäžãããŸãã
ãã®ãµã€ãºã衚ãã®ã¯ãæ ŒçŽãããã¹æååã®ç·ãã€ãæ°ãšã ãã£ãã·ã¥ãšã³ããªã«é¢é£ã¥ããããŒã¿ã®ãµã€ãºãè¶³ãããã®ã§ãã ã€ãŸããé·ããã¹ããã£ãã·ã¥ã«æ ŒçŽããã«ã¯ããã£ãã·ã¥ã®ãµã€ãºã倧ããããªããã°ãããŸããã ãã®å€ã䜿ã£ãŠãæå€§äœä»¶ã®ãã¹ããã£ãã·ã¥ããã®ããå¶åŸ¡ããããšã¯ã§ããŸããã
ãã£ãã·ã¥ãšã³ããªã®ããŒã¿ã«å¿ èŠãªãµã€ãºã¯ãã·ã¹ãã ã«ãã£ãŠå€ãããŸãã
realpath_cache_ttl
int
äžãããããã¡ã€ã«ããã£ã¬ã¯ããªã«ã€ããŠã® realpath æ å ±ãã£ãã·ã¥ã®æå¹æéã (ç§åäœã§) èšå®ããŸãã ãã¡ã€ã«ã倿Žããããšãã»ãšãã©ãªãå Žåã¯ã ãã®å€ã倧ããããããšãæ€èšããŠãã ããã
| åå | ããã©ã«ã | 倿Žå¯èœ | 倿Žå±¥æŽ |
|---|---|---|---|
| arg_separator.output | "&" | INI_ALL |
 |
| arg_separator.input | "&" | INI_SYSTEM|INI_PERDIR |
 |
| variables_order | "EGPCS" | INI_PERDIR |
 |
| request_order | "" | INI_PERDIR |
 |
| auto_globals_jit | "1" | INI_PERDIR |
 |
| register_argc_argv | "1" | INI_PERDIR |
PHP 8.5.0 以éã¯éæšå¥šã§ãã |
| enable_post_data_reading | "1" | INI_PERDIR |
 |
| post_max_size | "8M" | INI_PERDIR |
 |
| auto_prepend_file | "" | INI_PERDIR |
 |
| auto_append_file | "" | 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.output
string
PHPãURLãçæããéã«URLåŒæ°ãåºåããããã«äœ¿çšãããã»ãã¬ãŒã¿ã
arg_separator.input
string
å ¥åãããURLã倿°ã«ããŒã¹ããéã«PHPã䜿çšããã»ãã¬ãŒã¿ã®ãªã¹ãã
泚æ:
ãã®ãã£ã¬ã¯ãã£ãã§æå®ããå šãŠã®æåã¯ã ã»ãã¬ãŒã¿ãšããŠèªèãããŸã!
variables_order
string
EGPCS (Environment (ç°å¢å€æ°)ã
GetãPostã
Cookie (ã¯ãããŒ)ããã㊠Server)
倿°ã®ããŒã¹ã®é çªãèšå®ããŸããäŸãã°
variables_order ã "SP"
ã«èšå®ãããšãPHP ã¯
ã¹ãŒããŒã°ããŒãã« $_SERVER ããã³
$_POST ãäœæããŸããã
$_ENVã$_GET ããã³
$_COOKIE ã¯äœæããŸããã""
ã«èšå®ãããšãäžå ã¹ãŒããŒã°ããŒãã« ãèšå®ããŸããã
CGI ããã³ FastCGI SAPI ã®äž¡æ¹ã§ã
$_SERVER
ã«ãç°å¢å€æ°ã®å€ãæ ŒçŽãããŸãã
ã€ãŸããS ãæå®ãããšã
ES ãšæå®ããã®ãšåãæå³ã«ãªããŸãã
ããã¯ãE ãä»ã®ã©ããã§æå®ãããŠãããšããŠãåãã§ãã
泚æ:
$_REQUEST ã®å 容ãé åºãããã®ãã£ã¬ã¯ãã£ãã®åœ±é¿ãåããŸãã
request_order
string
ãã®ãã£ã¬ã¯ãã£ãã¯ãPHP ã GET 倿°ã POST 倿°ãããŠã¯ãããŒå€æ°ã _REQUEST é åã«ç»é²ããéã®é åºã衚ããŸãã ç»é²ã¯å·Šããå³ã®é ã«è¡ããåŸããç»é²ããå€ãå€ãå€ãäžæžãããŸãã
ãã®ãã£ã¬ã¯ãã£ããèšå®ãããŠããªãå Žåã¯ãvariables_order ã䜿çšã㊠$_REQUEST ãèšå®ããŸãã
ããã©ã«ãã®é
åžç¶æ
ã® php.ini ãã¡ã€ã«ã«ã¯ãã¯ãããŒã®
'C' ãå«ãŸããŠããªãããšã«æ³šæããŸãããã
ã»ãã¥ãªãã£ãèæ
®ããããã§ãã
auto_globals_jit
bool
æå¹ã«ããå ŽåãSERVERãREQUEST ããã³ ENV 倿°ã¯ã¹ã¯ãªããã®éå§æã§ã¯ãªãã æåã«äœ¿çšãããæ (Just In Time) ã«äœæãããããã«ãªããŸãã ãããã®å€æ°ãã¹ã¯ãªããã®äžã§äœ¿çšãããªãå Žåã ãã®ãã£ã¬ã¯ãã£ãã䜿çšããããšã§æ§èœãåäžããŸãã
SERVERãREQUEST ããã³ ENV 倿°ã®å©çšãã§ãã¯ã¯ã³ã³ãã€ã«æã«è¡ãããŸãã ãããã£ãŠãããšãã° å¯å€å€æ° ã§äœ¿çšããå Žåã¯åæåãè¡ããŸããã
register_argc_argv
bool
ãã®æ©èœã¯ PHP 8.5.0 ã§ éæšå¥š ã«ãªããŸãããã®æ©èœã«é ŒããªãããšãåŒ·ãæšå¥šããŸãã
泚æ: CLI 以å€ã® SAPI ã«ãããŠãã¯ãšãªæååãã
$_SERVER['argc']ããã³$_SERVER['argv']ãå°åºããæåã¯éæšå¥šã«ãªããŸãããregister_argc_argv=0ãèšå®ãã ãã®äœ¿ãæ¹ãå®å šã§ããããšã確èªããäžã§ã $_GET ãŸãã¯$_SERVER['QUERY_STRING']ã®ããããã«åãæ¿ããŠæ å ±ãååŸããããã«ããŠãã ããã
enable_post_data_reading
bool
post_max_size
int
post_max_sizeããã倧ãã
ããå¿
èŠããããŸãã
intã䜿çšããéã
ãã®å€ã¯ãã€ãåäœã§æž¬ãããŸãã
ãã® FAQ ã«èšèŒããã
ç瞮衚èšã䜿çšããããšãå¯èœã§ãã
POSTããŒã¿ã®å€§ããããpost_max_sizeãã倧ããå Žåã
$_POST ãš $_FILES
ã¹ãŒããŒã°ããŒãã«
ã¯ç©ºã«ãªããŸãããã®äºè±¡ã¯ãããã€ãã®æ¹æ³ã§æ€åºããããšãã§ããŸãã
äŸãã°ã$_GET 倿°ãããŒã¿ã
<form action="edit.php?processed=1">ã®ããã«
åŠçããã¹ã¯ãªããã«æž¡ãã
$_GET['processed'] ãèšå®ãããŠãããã©ããã
確èªããæ¹æ³ããããŸãã
泚æ:
PHP ã§ã¯ããã€ãå€ã衚ãã·ã§ãŒãã«ãã K (kilo)ãM (mega) ããã³ G (giga) ã䜿çšããããšãã§ããŸãã ãããã䜿çšããå ŽåãPHP ãèŠçŽã«ãããã£ãŠèªåçã«å€ã倿ããŸãã 32 ããã笊å·ä»ãæŽæ°ã®æå€§å€ãäžåãå€ãæå®ããªãããã«æ³šæããŸããã (32 ãããã·ã¹ãã ã䜿çšããŠããå Žå)ã ãã®ãããªããšããããšãã¹ã¯ãªããã®å®è¡ã倱æããŸãã
| ããŒãžã§ã³ | 説æ |
|---|---|
| 5.3.4 |
ã³ã³ãã³ãã¿ã€ãã application/x-www-form-urlencoded ã§ãã£ãããããã㯠PHP ã«ç»é²ãããŠããªããã®ã§ãã£ãå Žåã¯ã
post_max_size = 0 ã«ããŠãäžéãç¡å¹ã«ã§ããªããªããŸããã
|
| 5.3.2 , 5.2.12 |
post_max_size ã 0 ã«ããããšã§ããµã€ãºãç¡å¶éã«ã§ããããã«ãªããŸããã
|
auto_prepend_file
string
ã¡ã€ã³ãã¡ã€ã«ã®åã«èªåçã«ä»å ããããã¡ã€ã«ã®ååãæå®ããŸãã ãã®ãã¡ã€ã«ã¯ãrequire 颿°ã®ã³ãŒã«æãšåæ§ã«èªã¿èŸŒãŸããŸãã ãã®ãããinclude_path ã䜿çšãããŸãã
ç¹å¥ãªå€ none ãæ
å®ãããšããã¡ã€ã«ãåã«è¿œå ããæ©èœã¯ç¡å¹ãšãªããŸãã
auto_append_file
string
ã¡ã€ã³ãã¡ã€ã«ã®åŸã«èªåçã«è¿œå ããããã¡ã€ã«ã®ååãæå®ããŸãã ãã®ãã¡ã€ã«ã¯ãrequire 颿°ã®ã³ãŒã«æãšåæ§ã«èªã¿èŸŒãŸããŸãã ãã®ãããinclude_path ã䜿çšãããŸãã
none ãå€ãšããŠ
æå®ãããšãã®èªåä»å æ©èœã¯ãªããšãªããŸãã
泚æ: ã¹ã¯ãªããã exit() ã§çµäºããå Žåã ãã®èªåä»å æ©èœã¯äœ¿çšãããŸãã ã
default_mimetype
string
ããã©ã«ãã§ã¯ãPHP ã¯ã¡ãã£ã¢ã¿ã€ãã Content-Type ãããã§åºåããŸãã ãããç¡å¹ã«ããã«ã¯ãããã«ç©ºæååãèšå®ããŸãããã
PHP ã®ããã©ã«ãã®ã¡ãã£ã¢ã¿ã€ã㯠text/html ã§ãã
default_charset
string
"UTF-8" ãããã©ã«ãã®å€ã§ãã
htmlentities() ã
html_entity_decode() ãããŠ
htmlspecialchars() ã§
encoding ãã©ã¡ãŒã¿ãçç¥ããå Žåã¯ããã®ããã©ã«ãå€ãå©çšããŸãã
ãŸããdefault_charset ã®å€ã¯ã
iconv 颿°ã§
iconv.input_encodingã
iconv.output_encodingã
iconv.internal_encoding
ãæªèšå®ã®å Žåãã
mbstring 颿°ã§
mbstring.http_input
mbstring.http_output
mbstring.internal_encoding
ãæªèšå®ã®å Žåã®ããã©ã«ããšããŠãçšããããŸãã
ãã¹ãŠã®ããŒãžã§ã³ã® PHP ã¯ãPHP ããéä¿¡ãã Content-Type ãããã®ããã©ã«ãå€ãšããŠããã䜿ããŸãã ãã ããheader() ã§äžæžããããŠããå Žåã¯å¥ã§ãã
default_charset ã«ç©ºæååãæå®ããããšã¯ãããããããŸããã
input_encoding
string
ãã®èšå®ã¯ãmbstring ã iconv ãªã©ã®ãã«ããã€ãã¢ãžã¥ãŒã«ã䜿ããã®ã§ããããã©ã«ãã¯ç©ºæååã§ãã
output_encoding
string
ãã®èšå®ã¯ãmbstring ã iconv ãªã©ã®ãã«ããã€ãã¢ãžã¥ãŒã«ã䜿ããã®ã§ããããã©ã«ãã¯ç©ºæååã§ãã
internal_encoding
string
ãã®èšå®ã¯ã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 ã®ã¿ |  |
| zend_extension | NULL | php.ini ã®ã¿ |  |
| 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_path
string
requireãincludeã fopen()ãfile()ã readfile() ããã³ 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"
ã€ã³ã¯ã«ãŒããã¹ã« . (ã«ã¬ã³ããã£ã¬ã¯ããª)
ãæå®ãããšãçžå¯Ÿãã¹æå®ã«ããã€ã³ã¯ã«ãŒããã§ããããã«ãªããŸãã
ããããã€ã³ã¯ã«ãŒãã®ãã³ã«æ¯å PHP ã«ã«ã¬ã³ããã£ã¬ã¯ããªããã§ãã¯ãããããã¯ã
æç€ºçã« include './file' ãæå®ããã»ããå¹ççã§ãã
泚æ:
ENV倿°ã¯ .ini ãã¡ã€ã«ã®äžã§ãã¢ã¯ã»ã¹ã§ããŸãã ããšãã°ãããŒã ãã£ã¬ã¯ããªãåç §ãããšãã«${LOGIN}ã${USER}ã䜿ããŸããç°å¢å€æ°ã¯ãµãŒã㌠API ã®çš®é¡ã«ãã£ãŠç°ãªãã®ã§ããã®ç°å¢ãç°ãªãããšããããŸãã
äŸ3 Unix include_path ã§ç°å¢å€æ° ${USER} ã䜿ãäŸ
include_path = ".:${USER}/pear/php"
open_basedir
string
PHP ããã¢ã¯ã»ã¹ã§ãããã¡ã€ã«ããæå®ãããã£ã¬ã¯ããªããªãŒã«éå®ããŸãã ãã¡ã€ã«èªèº«ãå«ã¿ãŸãã
ã¹ã¯ãªãããã include ã fopen() ãªã©ã§ãã¡ã€ã«ã·ã¹ãã ã«ã¢ã¯ã»ã¹ããããšãããšãã«ããã®ãã¡ã€ã«ã®å Žæããã§ãã¯ããŸãã ãã¡ã€ã«ãæå®ãããã£ã¬ã¯ããªããªãŒã®å€ã«ããå Žåã¯ãPHP ã¯ãã®ãã¡ã€ã«ãžã®ã¢ã¯ã»ã¹ãæåŠããŸãã ã·ã³ããªãã¯ãªã³ã¯ã®è§£æ±ºãè¡ãã®ã§ã ã·ã³ããªãã¯ãªã³ã¯ã§ãã®å¶éãåé¿ããããšã¯ã§ããŸããã ååšããªããã¡ã€ã«ãžã®ã·ã³ããªãã¯ãªã³ã¯ã¯è§£æ±ºã§ããªãã®ã§ã ãã¡ã€ã«åã open_basedir ãšæ¯èŒããŸãã
open_basedir ã¯ããã¡ã€ã«ã·ã¹ãã 颿°ä»¥å€ã®æåã«ã圱é¿ãåãŒããŸãã
ããšãã° MySQL ã®èšå®ã§ mysqlnd ãã©ã€ããŒã䜿ãããã«ããŠããå Žåã«ã
LOAD DATA INFILE 㯠open_basedir ã®åœ±é¿ãåããŸãã
PHP ã®æ¡åŒµã¢ãžã¥ãŒã«ã®å€ãããopen_basedir ããã®ããã«å©çšããŠããŸãã
ç¹å¥ãªå€ . ã¯ã
ã¹ã¯ãªããã®äœæ¥ãã£ã¬ã¯ããªã衚ããŸãããããããŒã¹ãã£ã¬ã¯ããªãšããããšãã§ããŸããã
å°ãå±éºã§ããã¹ã¯ãªããã®äœæ¥ãã£ã¬ã¯ããªã¯
chdir() ã§å®¹æã«å€æŽã§ããããã§ãã
httpd.conf ã§ã(ããšãã°ããŒãã£ã«ãã¹ãåäœã§)
open_basedir ãç¡å¹ã«ããããšãã§ããŸãã
ãã®ä»ã®èšå®ãã£ã¬ã¯ãã£ãã®å Žåãš
åæ§ã«
"php_admin_value open_basedir
none" ã®ããã«ããŸãã
Windows ã§ã¯ããã£ã¬ã¯ããªã®åºåãã¯ã»ãã³ãã³ãšãªããŸãã ãã®ä»ã®ã·ã¹ãã ã§ã¯ãã³ãã³ã§åºåããŸããApache ã¢ãžã¥ãŒã«ã§ã¯ã 芪ãã£ã¬ã¯ããªããã® open_basedir ãã¹ãèªåçã«ç¶æ¿ããŸãã
open_basedir ã§æå®ããå¶çŽã¯ã ãã£ã¬ã¯ããªåãšãªããŸãããã¬ãã£ãã¯ã¹ã§ã¯ãããŸããã
ããã©ã«ãã§ã¯ããã¹ãŠã®ãã¡ã€ã«ãéãããšãã§ããŸãã
泚æ: open_basedir ã®èšå®ãå®è¡æã«å³ããããããšãã§ããŸãã ããã¯ãopen_basedir ã php.ini ã§
/www/ãšèšå®ãããŠãããšãã«ãã¹ã¯ãªããå ã§ ini_set() ã䜿ã£ãŠèšå®ãå³ããããŠ/www/tmp/ã®ããã«ã§ãããšããããšã§ãã è€æ°ã®ãã£ã¬ã¯ããªãæå®ãããšãã«ã¯ã宿°PATH_SEPARATORã䜿ãã° OS ã«äŸåããªãèšè¿°ãã§ããŸãã PHP 8.3.0 以éã§ã¯ãini_set() ã䜿ã£ãŠå®è¡æã« open_basedir ã®å€ãèšå®ããå Žåã 芪ãã£ã¬ã¯ã㪠(..) ãå«ããã¹ãåãå ¥ããªããªããŸããã
泚æ:
open_basedir ã䜿çšãããšãrealpath_cache_sizeãã¯
0ã«èšå®ãããçµæãšã㊠realpath ãã£ãã·ã¥ã¯ disable ã«ãããŸãã
open_basedir ã¯ã远å ã®ã»ãã¥ãªãã£æ©æ§ã§ãããããŸããã
ã€ãŸããåºç¯å²ã«é©çšã§ãããã®ã§ã¯æ±ºããŠãªãããã
ã»ãã¥ãªãã£ãé«ããå¿
èŠãããéã«ããã ãã«äŸåããŠã¯ãããŸããã
doc_root
string
ãµãŒããŒã«ãããPHPã®"ã«ãŒããã£ã¬ã¯ããª"ã§ãããã®å€ã¯ç©ºã§ç¡ ãå Žåã®ã¿äœ¿çšãããŸãã PHPãFORCE_REDIRECTãæå®ããŠã³ã³ãã€ã«ãããŠããªãå Žåã (IIS以å€ã®)WebãµãŒããŒã®ããšã§CGIãšããŠPHPãå®è¡ããéã«ã¯ã doc_rootãæå®ããã¹ãã§ãã ä»ã®æ¹æ³ãšããŠã¯ãåŸè¿°ã® cgi.force_redirect èšå®ã®äœ¿çšããããŸãã
user_ini.cache_ttl
int
user_ini.filename
string
user_dir
string
PHPãã¡ã€ã«çšã«ãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããª
ãšããŠäœ¿çšããåºæ¬ãã£ã¬ã¯ããªã®ååãäŸãã°ã
public_html ãšãªããŸãã
extension_dir
string
åçã«ããŒãå¯èœãªæ¡åŒµã¢ãžã¥ãŒã«ã眮ããã£ã¬ã¯ããªã æå®ããŸãã 絶察ãã¹ãæå®ããããšãæšå¥šããŸãã enable_dl ãš dl() ãåç §ãã ããã
extension
string
PHP ã®éå§æã«ãã©ã®åçããŒãå¯èœãªæ¡åŒµã¢ãžã¥ãŒã«ãããŒãããããæå®ããŸãã
zend_extension
string
PHP ã®èµ·åæã«èªã¿èŸŒãåçèªã¿èŸŒã¿å¯èœãª Zend æ¡åŒµã¢ãžã¥ãŒã« (ããšãã° XDebug) ã®ååã
cgi.check_shebang_line
bool
CGI çã® PHP ããå®è¡ããã¹ã¯ãªããã®å
é ã«ãã #! ããå§ãŸãè¡
(shebang) ããã§ãã¯ãããã©ãããæå®ããŸãã
åãã¹ã¯ãªãããã¹ã¿ã³ãã¢ãã³ãš PHP CGI çµç±ã®äž¡æ¹ã§äœ¿çšãããå Žåãªã©ã«ã
ãã®è¡ãå¿
èŠã«ãªãã§ãããããã®ãã£ã¬ã¯ãã£ãã on ã«ããŠãããšã
CGI çã® PHP ã¯ãã®è¡ã®å
容ãèªã¿é£ã°ãããã«ãªããŸãã
cgi.discard_path
bool
ãããæå¹ã«ãããšãPHP CGI ã®ãã€ããªã web ã«ãŒãã®ããªãŒã®å€éšã«é 眮ã§ããããã«ãªããŸãã ããã§ã.htaccess ã®ã»ãã¥ãªãã£ããããæããŠã¢ã¯ã»ã¹ãããå¿é ããªããªããŸãã
cgi.fix_pathinfo
bool
æ¬æ¥ã® PATH_INFO/PATH_TRANSLATED
ãµããŒããCGIã§æäŸããŸãã PHPã®ä»¥åã®åäœã¯ã
SCRIPT_FILENAMEã«PATH_TRANSLATEDãèšå®ãããšãããã®ã§ã
PATH_INFOã®å®çŸ©ãçè§£ããŠããŸãããã§ããã
PATH_INFOã«é¢ãã詳现ã«ã€ããŠã¯ãCGIã®ä»æ§ãåç
§ãã ããã
ãã®ãªãã·ã§ã³ã1ã«ããããšã«ããã
PHP CGIã¯ãã®ãã¹ã仿§ã«ããããã«ä¿®æ£ããŸãã
ãŒããšãããšã PHPã¯ä»¥åãšåæ§ã«åäœããŸããããã¯ãããã©ã«ãã§ãªã³ã«ãªã£ãŠããŸãã
PATH_TRANSLATEDã§ã¯ãªããSCRIPT_FILENAMEã䜿çšããããã«ã¹ã¯ãªãã
ãä¿®æ£ããå¿
èŠããããŸãã
cgi.force_redirect
bool
cgi.force_redirect ã¯ãã»ãšãã©ã®WebãµãŒããŒã®ããšã§ CGI ãšã㊠PHP ãå®è¡ããéã®ã»ãã¥ãªãã£ã確ä¿ããããã«å¿ èŠã§ãã æªå®çŸ©ã®ãŸãŸã®å ŽåãPHPã¯ããã©ã«ãã§ããã on ã«ããŸãã ããã off ã«ããæã¯ãèªå·±è²¬ä»» ã®äžã« è¡ãªã£ãŠãã ããã
泚æ:
WindowsãŠãŒã¶ãŒ: IIS ã䜿ãå Žåã¯ããã®ãªãã·ã§ã³ã¯ å¿ ã off ã«ããªããã°ãªããŸããã OmniHTTPD ã Xitami ã®å Žåãåæ§ã§ãã
cgi.nph
bool
cgi.nph ãæå¹ã«ãããšããã¹ãŠã®ãªã¯ãšã¹ãã«å¯Ÿã㊠cgi ãã¹ããŒã¿ã¹ã³ãŒã 200 ãè¿ãããã«åŒ·å¶ããŸãã
cgi.redirect_status_env
string
cgi.force_redirect ã on ã«ããApache ãŸã㯠Netscape (iPlanet) WebãµãŒããŒã®ããšã§å®è¡ããŠããªãå Žåã å®è¡ãç¶ç¶ããŠè¯ããã©ãããPHPã倿ããããã« ç°å¢å€æ°ã®ååãèšå®ããå¿ èŠããããããããŸããã
泚æ:
ãã®å€æ°ãèšå®ããããšã«ãããã»ãã¥ãªãã£äžã®åé¡ãçºçãã å ŽåããããŸããè¡ãããšã®ãªã¹ã¯ããŸãææ¡ããŠãã ããã
cgi.rfc2616_headers
bool
PHP ã«ãHTTP ã¬ã¹ãã³ã¹ãè¿ãéã«ãã©ã®åœ¢åŒã®ããããŒã䜿ãã æç€ºããŸãããã®ãªãã·ã§ã³ãç¡å¹ã«ãããšã0 ã«ã»ããããå Žåã¯ãApache ããã®ä»ã® web ãµãŒããŒã§ ãµããŒããããŠãã » RFC 3875 Status: ããããŒãéä¿¡ããŸãããã®ãªãã·ã§ã³ãæå¹ã«ãããšã PHP 㯠» RFC 2616 ã®ä»æ§ã«é©åãã圢åŒã®ããããŒãéä¿¡ããŸãã
ãã®ãªãã·ã§ã³ãæå¹ã«ããŠãã〠PHP ã CGI ç°å¢ (PHP-FPM ãªã©) ã§åãããŠããå Žåã¯ã æšæºã® RFC 2616 圢åŒã® HTTP ã¹ããŒã¿ã¹ã¬ã¹ãã³ã¹ããããŒã䜿ã£ãŠã¯ãããŸããããã®ãããã« RFC 3875 圢åŒã«ããå¿ èŠããããŸããã€ãŸãã header("HTTP/1.0 404 Not found"); ã§ã¯ãªã header("Status: 404 Not Found"); ã«ããªããã°ãããªããšããããšã§ãã
ããããããªããšãã¯ããã®å€ã¯ç¡å¹ã®ãŸãŸã«ããŠãããŸãããã
fastcgi.impersonate
bool
IIS (ãŸã㯠WINNT ããŒã¹ã® OS) ã®ããšã§ã® FastCGI ã¯ã ã¯ã©ã€ã¢ã³ããã³ãŒã«ããéã«ã»ãã¥ãªãã£ããŒã¯ã³ã å¿ååããæ©èœããµããŒãããŠããŸãã ããã«ãããIIS ããªã¯ãšã¹ããåŠçããã»ãã¥ãªãã£ã³ã³ããã¹ãã å®çŸ©ã§ããããã«ãªããŸããApacheã®ããšã§å®è¡ããã mod_fastcgi ã¯çŸåš (2002/03/17) ãã®æ©èœããµããŒãããŠããŸããã IIS ã®ããšã§å®è¡ããã«ã¯ãæå¹ã«ããŠãããŠãã ããã ããã©ã«ãã¯ç¡å¹ã«ãªã£ãŠããŸãã
fastcgi.logging
bool
FastCGI 䜿çšäžã® SAPI ãã®ã³ã°ãæå¹ã«ããŸãã ããã©ã«ãã¯ãã®ã³ã°ãæå¹ãšãªã£ãŠããŸãã
| åå | ããã©ã«ã | 倿Žå¯èœ | 倿Žå±¥æŽ |
|---|---|---|---|
| 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_uploads
bool
HTTP ãã¡ã€ã«ã¢ããããŒã ãæå¹ãšãããã©ããã upload_max_filesize, upload_tmp_dir, post_max_size ãã£ã¬ã¯ãã£ããåç §ãã ããã
upload_tmp_dir
string
ãã¡ã€ã«ã¢ããããŒãæã«ãã¡ã€ã«ä¿åã«çšãããã³ãã©ãªãã£ã¬ã¯ããªã PHPã®å®è¡ãŠãŒã¶ãŒãæžããã¿å¯èœã§ããå¿ èŠã ãããŸããæå®ãããªãå ŽåãPHPã¯ã·ã¹ãã ã®ããã©ã«ãèšå®ã 䜿çšããŸãã
ããã§æå®ãããã£ã¬ã¯ããªã«æžã蟌ãããšãã§ããªãå Žåã PHP ã¯ãããã«ã·ã¹ãã ã®ããã©ã«ããã³ãã©ãªãã£ã¬ã¯ããªã䜿çšããŸãã open_basedir ã on ã®å Žåã¯ãã·ã¹ãã ã®ããã©ã«ããã³ãã©ãªãã£ã¬ã¯ããªãžã®ã¢ããããŒããèš±å¯ããŠãããªããã°ãªããŸããã
upload_max_filesize
int
ã¢ããããŒãããããã¡ã€ã«ã®æå€§ãµã€ãºã
post_max_size ã«ã¯ã ãã®å€ãã倧ããªå€ãæå®ããªããã°ãããŸããã
intã䜿çšããéã ãã®å€ã¯ãã€ãåäœã§æž¬ãããŸãã ãã® FAQ ã«èšèŒããã ç瞮衚èšã䜿çšããããšãå¯èœã§ããmax_file_uploads
int
åæã«ã¢ããããŒãã§ãããã¡ã€ã«ã®æå€§æ°ã äœããã¡ã€ã«ãæå®ããã«éä¿¡ãããã¢ããããŒããã£ãŒã«ã㯠ãã¡ã€ã«æ°ã«æ°ããããŸããã
| åå | ããã©ã«ã | 倿Žå¯èœ | 倿Žå±¥æŽ |
|---|---|---|---|
| sql.safe_mode | "0" | INI_SYSTEM |
PHP 7.2.0 以éã¯åé€ãããŠããŸãã |
以äžã«èšå®ãã£ã¬ã¯ãã£ãã«é¢ãã ç°¡åãªèª¬æã瀺ããŸãã
sql.safe_mode
bool
ãªã³ã«ãããšãããã©ã«ãå€ãæå®ãããŠããããŒã¿ããŒã¹æ¥ç¶é¢æ°ã¯ã åŒæ°ã§æå®ãããå€ãããããã©ã«ãå€ãåªå ããŠäœ¿çšããŸãã ããã©ã«ãå€ã®è©³çްã«ã€ããŠã¯ãé¢é£ããããŒã¿ããŒã¹ã®ããã¥ã¡ã³ããåç §ãã ããã
ãã®æ©èœã¯ PHP 7.2.0 ã§ åé€ ãããŸããã
| åå | ããã©ã«ã | 倿Žå¯èœ | 倿Žå±¥æŽ |
|---|---|---|---|
| windows.show_crt_warning | "0" | INI_ALL |
 |
以äžã«èšå®ãã£ã¬ã¯ãã£ãã«é¢ãã ç°¡åãªèª¬æã瀺ããŸãã
windows.show_crt_warning
bool
ãã®ãã£ã¬ã¯ãã£ããæå¹ã«ãããšãWindows CRT ã®èŠåã衚瀺ããŸãã
https://haydenjames.io/understanding-php-memory_limit/ explains the memory_limit setting nicely.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.