php之php.ini详细配置
配置⽂件(php.ini)在 PHP 启动时被读取。对于服务器模块版本的 PHP,仅在 web 服务器启动时读取⼀次。对于 CGI 和 CLI 版本,每次调⽤都会读取。
php.ini的搜索路径如下(按顺序):
SAPI 模块所指定的位置(Apache 2 中的PHPIniDir指令,CGI 和 CLI 中的-c命令⾏选项,NSAPI 中的php_ini参数,THTTPD 中的PHP_INI_PATH环境变量)。
PHPRC环境变量。在 PHP 5.2.0 之前,其顺序在以下提及的注册表键值之后。
⾃ PHP 5.2.0 起,可以为不同版本的 PHP 指定不同的php.ini⽂件位置。将以下⾯的顺序检查注册表⽬
录:[HKEY_LOCAL_MACHINE\SOFTWARE\],[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y]和[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x],其中的 x,y 和 z 指的是 PHP 主版本号,次版本号和发⾏批次。如果在其中任何⽬录下的IniFilePath有键值,则第⼀个值将被⽤作php.ini的位置(仅适⽤于windows)。
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]内IniFilePath的值(Windows 注册表位置)。
当前⼯作⽬录(对于 CLI)。
web 服务器⽬录(对于 SAPI 模块)或 PHP 所在⽬录(Windows 下其它情况)。
Windows ⽬录(C:\windows或C:\winnt),或--with-config-file-path编译时选项指定的位置。
如果存在php-SAPI.ini(SAPI 是当前所⽤的 SAPI 名称,因此实际⽂件名为php-cli.ini或php-apache.ini等),则会⽤它替代php.ini。SAPI 的名称可以⽤来测定。
Note:
Apache web 服务器在启动时会把⽬录转到根⽬录,这将导致 PHP 尝试在根⽬录下读取php.ini,如果存在的话。
Note:
在php.ini中可以使⽤环境变量。
由扩展库处理的php.ini指令,其⽂档分别在各扩展库的页⾯。见附录。不过也许不是所有的 PHP 指令都在⼿册中有⽂档说明。要得到⾃⼰的 PHP 版本中的配置指令完整列表,请阅读php.ini⽂件,其中都有注释。此外,也许从 Git 得到的也有帮助。
;;;;;;;;;;;;
Apache ;;
;;;;;;;;;;;;
[Apache]
仅在将PHP作为Apache模块时才有效。
engine = On
是否启⽤PHP解析引擎。
可以在f中基于⽬录或者虚拟主机来打开或者关闭PHP解析引擎。
last_modified = Off
是否在Last-Modified应答头中放置该PHP脚本的最后修改时间。
xbithack = Off
是否不管⽂件结尾是什么,都作为PHP可执⾏位组来解析。
child_terminate = Off
PHP脚本在请求结束后是否允许使⽤apache_child_terminate()函数终⽌⼦进程。该指令仅在UNIX平台上将PHP安装为Apache1.3的模块时可⽤。其他情况下皆不存在。
;;;;;;;;;;;;;
PHP核⼼ ;;
;;;;;;;;;;;;;
[PHP-Core-DateTime]
前四个配置选项⽬前仅⽤于date_sunrise()和date_sunset()函数。
date.default_latitude = 31.7667
默认纬度
date.default_longitude = 35.2333
默认经度
date.sunrise_zenith = 90.583333
默认⽇出天顶
date.sunset_zenith = 90.583333
默认⽇落天顶
date.timezone =
未设定TZ环境变量时⽤于所有⽇期和时间函数的默认时区。
中国⼤陆应当使⽤"PRC"
应⽤时区的优先顺序为:
1. ⽤date_default_timezone_set()函数设定的时区(如果设定了的话)
2. TZ 环境变量(如果⾮空的话)
3. 该指令的值(如果设定了的话)
4. PHP⾃⼰推测(如果操作系统⽀持)
5. 如果以上都不成功,则使⽤ UTC
[PHP-Core-Assert]
assert.active = On
是否启⽤assert()断⾔评估
assert.bail = Off
是否在发⽣失败断⾔时中⽌脚本的执⾏
assert.callback =
发⽣失败断⾔时执⾏的回调函数
assert.quiet_eval = Off
是否使⽤安静评估(不显⽰任何错误信息,相当于error_reporting=0)。
若关闭则在评估断⾔表达式的时候使⽤当前的error_reporting指令值。
assert.warning = On
是否对每个失败断⾔都发出警告
[PHP-Core-SafeMode]
安全模式是为了解决共享服务器的安全问题⽽设⽴的。
但试图在PHP层解决这个问题在结构上是不合理的,
正确的做法应当是修改web服务器层和操作系统层。
因此在PHP6中废除了安全模式,并打算使⽤open_basedir指令取代之。
safe_mode = Off
SYS
是否启⽤安全模式。
打开时,PHP将检查当前脚本的拥有者是否和被操作的⽂件的拥有者相同,
相同则允许操作,不同则拒绝操作。
safe_mode_gid = Off
SYS
在安全模式下,默认在访问⽂件时会做UID⽐较检查。
但有些情况下严格的UID检查反⽽是不适合的,宽松的GID检查已经⾜够。
如果你想将其放宽到仅做GID⽐较,可以打开这个参数。
safe_mode_allowed_env_vars = "PHP_"
SYS
在安全模式下,⽤户仅可以更改的环境变量的前缀列表(逗号分隔)。
允许⽤户设置某些环境变量,可能会导致潜在的安全漏洞。
注意: 如果这⼀参数值为空,PHP将允许⽤户更改任意环境变量!
safe_mode_protected_env_vars = "LD_LIBRARY_PATH"
SYS
在安全模式下,⽤户不能更改的环境变量列表(逗号分隔)。
这些变量即使在safe_mode_allowed_env_vars指令设置为允许的情况下也会得到保护。
safe_mode_exec_dir = "/usr/local/php/bin"
SYS
在安全模式下,只有该⽬录下的可执⾏程序才允许被执⾏系统程序的函数执⾏。
这些函数是:system, escapeshellarg, escapeshellcmd, exec, passthru,proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec
safe_mode_include_dir =
SYS
在安全模式下,该组⽬录和其⼦⽬录下的⽂件被包含时,将跳过UID/GID检查。换句话说,如果此处的值为空,任何UID/GID不符合的⽂件都不允许被包含。这⾥设置的⽬录必须已经存在于include_path指令中或者⽤完整路径来包含。
多个⽬录之间⽤冒号(Win下为分号)隔开。指定的限制实际上是⼀个前缀,⽽⾮⼀个⽬录名,也就是说"/dir/incl"将允许访问"/dir/include"和"/dir/incls"如果您希望将访问控制在⼀个指定的⽬录,那么请在结尾加上斜线。
sql.safe_mode = Off
SYS
是否使⽤SQL安全模式。
如果打开,指定默认值的数据库连接函数将会使⽤这些默认值代替⽀持的参数。对于每个不同数据库的连接函数,其默认值请参考相应的⼿册页⾯。
[PHP-Core-Safe]
allow_url_fopen = On
ini
是否允许打开远程⽂件
allow_url_include = Off
SYS
是否允许include/require远程⽂件。
disable_classes =
php如何运行代码 ini
该指令接受⼀个⽤逗号分隔的类名列表,以禁⽤特定的类。
disable_functions =
ini
该指令接受⼀个⽤逗号分隔的函数名列表,以禁⽤特定的函数。
enable_dl = On
SYS
是否允许使⽤dl()函数。dl()函数仅在将PHP作为apache模块安装时才有效。
禁⽤dl()函数主要是出于安全考虑,因为它可以绕过open_basedir指令的限制。
在安全模式下始终禁⽤dl()函数,⽽不管此处如何设置。
expose_php = On
ini
是否暴露PHP被安装在服务器上的事实(在http头中加上其签名)。
它不会有安全上的直接威胁,但它使得客户端知道服务器上安装了PHP。
open_basedir =
SYS
将PHP允许操作的所有⽂件(包括⽂件⾃⾝)都限制在此组⽬录列表下。
当⼀个脚本试图打开⼀个指定⽬录树之外的⽂件时,将遭到拒绝。
所有的符号连接都会被解析,所以不可能通过符号连接来避开此限制。
特殊值''.''指定了存放该脚本的⽬录将被当做基准⽬录。
但这有些危险,因为脚本的⼯作⽬录可以轻易被chdir()改变。
对于共享服务器,在f中灵活设置该指令将变得⾮常有⽤。
在Windows中⽤分号分隔⽬录,UNIX系统中⽤冒号分隔⽬录。
作为Apache模块时,⽗⽬录中的open_basedir路径将⾃动被继承。
指定的限制实际上是⼀个前缀,⽽⾮⼀个⽬录名,
也就是说"/dir/incl"将允许访问"/dir/include"和"/dir/incls",
如果您希望将访问控制在⼀个指定的⽬录,那么请在结尾加上⼀个斜线。
默认是允许打开所有⽂件。
[PHP-Core-Error]
error_reporting = E_ALL & ~E_NOTICE
memory_limit = 16M
⼀个脚本所能够申请到的最⼤内存字节数(可以使⽤K和M作为单位)。
这有助于防⽌劣质脚本消耗完服务器上的所有内存。
要能够使⽤该指令必须在编译时使⽤"--enable-memory-limit"配置选项。
如果要取消内存限制,则必须将其设为 -1 。
设置了该指令后,memory_get_usage()函数将变为可⽤。
max_input_time = -1
每个脚本解析输⼊数据(POST, GET, upload)的最⼤允许时间(秒)。
-1 表⽰不限制。
post_max_size = 8M
允许的POST数据最⼤字节长度。此设定也影响到⽂件上传。
如果POST数据超出限制,那么$_POST和$_FILES将会为空。
要上传⼤⽂件,该值必须⼤于upload_max_filesize指令的值。
如果启⽤了内存限制,那么该值应当⼩于memory_limit指令的值。
realpath_cache_size = 16K
SYS
指定PHP使⽤的realpath(规范化的绝对路径名)缓冲区⼤⼩。
在PHP打开⼤量⽂件的系统上应当增⼤该值以提⾼性能。
realpath_cache_ttl = 120
SYS
realpath缓冲区中信息的有效期(秒)。
对⽂件很少变动的系统,可以增⼤该值以提⾼性能。
[PHP-Core-FileUpLoad]
file_uploads = On
SYS
是否允许HTTP⽂件上传。
参见upload_max_filesize, upload_tmp_dir, post_max_size指令
upload_max_filesize = 2M
允许上传的⽂件的最⼤尺⼨。
upload_tmp_dir =
SYS
⽂件上传时存放⽂件的临时⽬录(必须是PHP进程⽤户可写的⽬录)。
如果未指定则PHP使⽤系统默认的临时⽬录。
[PHP-Core-MagicQuotes]
PHP6将取消魔术引号,相当于下列指令全部为 Off
magic_quotes_gpc = On
是否对输⼊的GET/POST/Cookie数据使⽤⾃动字符串转义( '' " NULL )。
这⾥的设置将⾃动影响 $_GEST $_POST $_COOKIE 数组的值。
若将本指令与magic_quotes_sybase指令同时打开,则仅将单引号('')转义为(''''),
其它特殊字符将不被转义,即( " NULL )将保持原样!!
建议关闭此特性,并使⽤⾃定义的过滤函数。
magic_quotes_runtime = Off
是否对运⾏时从外部资源产⽣的数据使⽤⾃动字符串转义( '' " NULL )。
若打开本指令,则⼤多数函数从外部资源(数据库,⽂本⽂件等)返回数据都将被转义。
例如:⽤SQL查询得到的数据,⽤exec()函数得到的数据,等等---www.bianceng
若将本指令与magic_quotes_sybase指令同时打开,则仅将单引号('')转义为(''''),
其它特殊字符将不被转义,即( " NULL )将保持原样!!
建议关闭此特性,并视具体情况使⽤⾃定义的过滤函数。
magic_quotes_sybase = Off
是否采⽤Sybase形式的⾃动字符串转义(⽤ '''' 表⽰ '')
[PHP-Core-HighLight]
highlight.bg = "#FFFFFF"
highlightment = "#FF8000"
highlight.default = "#0000BB"
highlight.html = "#000000"
highlight.keyword = "#007700"
highlight.string = "#DD0000"
语法⾼亮模式的⾊彩(通常⽤于显⽰ .phps ⽂件)。
只要能被<font color=xxx>接受的东西就能正常⼯作。
[PHP-Core-Langue]
short_open_tag = On
是否允许使⽤"<? ?>"短标识。否则必须使⽤"<?php ?>"长标识。
除⾮你的php程序仅在受控环境下运⾏,且只供⾃⼰使⽤,否则请不要使⽤短标记。
如果要和XML结合使⽤PHP,可以选择关闭此选项以⽅便直接嵌⼊"<?xml ... ?>",不然你必须⽤PHP来输出:<? echo ''<?xml version="1.0"''; ?>本指令也会影响到缩写形式"<?=",它和"<? echo"等价,要使⽤它也必须打开短标记。
asp_tags = Off
是否允许ASP风格的标记"<% %>",这也会影响到缩写形式"<%="。
PHP6中将删除此指令
arg_separator.output = "&"
PHP所产⽣的URL中⽤来分隔参数的分隔符。
另外还可以⽤"&"或","等等。
arg_separator.input = "&"
PHP解析URL中的变量时使⽤的分隔符列表。
字符串中的每⼀个字符都会被当作分割符。
另外还可以⽤",&"等等。
allow_call_time_pass_reference = On
是否强迫在函数调⽤时按引⽤传递参数(每次使⽤此特性都会收到⼀条警告)。
php反对这种做法,并在将来的版本⾥不再⽀持,因为它影响到了代码的整洁。
⿎励的⽅法是在函数声明⾥明确指定哪些参数按引⽤传递。
我们⿎励你关闭这⼀选项,以保证你的脚本在将来版本的语⾔⾥仍能正常⼯作。
auto_globals_jit = On
是否仅在使⽤到$_SERVER和$_ENV变量时才创建(⽽不是在脚本⼀启动时就⾃动创建)。
如果并未在脚本中使⽤这两个数组,打开该指令将会获得性能上的提升。
要想该指令⽣效,必须关闭register_globals和register_long_arrays指令。
auto_prepend_file =
auto_append_file =
指定在主⽂件之前/后⾃动解析的⽂件名。为空表⽰禁⽤该特性。
该⽂件就像调⽤了include()函数被包含进来⼀样,因此会使⽤include_path指令的值。
注意:如果脚本通过exit()终⽌,那么⾃动后缀将不会发⽣。---www.bianceng
variables_order = "EGPCS"
PHP注册 Environment, GET, POST, Cookie, Server 变量的顺序。
分别⽤ E, G, P, C, S 表⽰,按从左到右注册,新值覆盖旧值。
举例说,设为"GP"将会导致⽤POST变量覆盖同名的GET变量,
并完全忽略 Environment, Cookie, Server 变量。
推荐使⽤"GPC"或"GPCS",并使⽤getenv()函数访问环境变量。
register_globals = Off
是否将 E, G, P, C, S 变量注册为全局变量。
打开该指令可能会导致严重的安全问题,除⾮你的脚本经过⾮常仔细的检查。
推荐使⽤预定义的超全局变量:$_ENV, $_GET, $_POST, $_COOKIE, $_SERVER
该指令受variables_order指令的影响。
PHP6中已经删除此指令。
register_argc_argv = On
是否声明$argv和$argc全局变量(包含⽤GET⽅法的信息)。
建议不要使⽤这两个变量,并关掉该指令以提⾼性能。
register_long_arrays = On
是否启⽤旧式的长式数组(HTTP_*_VARS)。
⿎励使⽤短式的预定义超全局数组,并关闭该特性以获得更好的性能。
PHP6中已经删除此指令。
always_populate_raw_post_data = Off
是否总是⽣成$HTTP_RAW_POST_DATA变量(原始POST数据)。
否则,此变量仅在遇到不能识别的MIME类型的数据时才产⽣。
不过,访问原始POST数据的更好⽅法是 php://input 。
$HTTP_RAW_POST_DATA对于enctype="multipart/form-data"的表单数据不可⽤。
unserialize_callback_func =
如果解序列化处理器需要实例化⼀个未定义的类,
这⾥指定的回调函数将以该未定义类的名字作为参数被unserialize()调⽤,
以免得到不完整的"__PHP_Incomplete_Class"对象。
如果这⾥没有指定函数,或指定的函数不包含(或实现)那个未定义的类,将会显⽰警告信息。
所以仅在确实需要实现这样的回调函数时才设置该指令。
若要禁⽌这个特性,只需置空即可。
y2k_compliance = On
是否强制打开2000年适应(可能在⾮Y2K适应的浏览器中导致问题)。
<1_compatibility_mode = Off
是否使⽤兼容Zend引擎I(PHP 4.x)的模式。
这将影响对象的复制、构造(⽆属性的对象会产⽣FALSE或0)、⽐较。
兼容模式下,对象将按值传递,⽽不是默认的按引⽤传递。
precision = 14
浮点型数据显⽰的有效位数。
serialize_precision = 100
将浮点型和双精度型数据序列化存储时的精度(有效位数)。
默认值能够确保浮点型数据被解序列化程序解码时不会丢失数据。
[PHP-Core-OutputControl]
输出控制函数很有⽤,特别是在已经输出了信息之后再发送HTTP头的情况下。
输出控制函数不会作⽤于header()或setcookie()等函数发送的HTTP头,
⽽只会影响类似于echo()函数输出的信息和嵌⼊在PHP代码之间的信息。
implicit_flush = Off
是否要求PHP输出层在每个输出块之后⾃动刷新数据。
这等效于在每个 print()、echo()、HTML块之后⾃动调⽤flush()函数。
打开这个选项对程序执⾏的性能有严重的影响,通常只推荐在调试时使⽤。
在CLI SAPI的执⾏模式下,该指令默认为 On 。
output_buffering = 0
输出缓冲区⼤⼩(字节)。建议值为4096~8192。
输出缓冲允许你甚⾄在输出正⽂内容之后再发送HTTP头(包括cookies)。
其代价是输出层减慢⼀点点速度。
设置输出缓冲可以减少写⼊,有时还能减少⽹络数据包的发送。
这个参数的实际收益很⼤程度上取决于你使⽤的是什么Web服务器以及什么样的脚本。
output_handler =
将所有脚本的输出重定向到⼀个输出处理函数。
⽐如,重定向到mb_output_handler()函数时,字符编码将被透明地转换为指定的编码。
⼀旦你在这⾥指定了输出处理程序,输出缓冲将被⾃动打开(output_buffering=4096)。
注意0: 此处仅能使⽤PHP内置的函数,⾃定义函数应在脚本中使⽤ob_start()指定。
注意1: 可移植脚本不能依赖该指令,⽽应使⽤ob_start()函数明确指定输出处理函数。
使⽤这个指令可能会导致某些你不熟悉的脚本出错。
注意2: 你不能同时使⽤"mb_output_handler"和"ob_iconv_handler"两个输出处理函数。
你也不能同时使⽤"ob_gzhandler"输出处理函数和zlib.output_compression指令。
注意3: 如果使⽤zlib.output_handler指令开启zlib输出压缩,该指令必须为空。
[PHP-Core-Directory]
doc_root =
SYS
PHP的"根⽬录"。仅在⾮空时有效。
如果safe_mode=On,则此⽬录之外的⽂件⼀概被拒绝。
如果编译PHP时没有指定FORCE_REDIRECT,并且在⾮IIS服务器上以CGI⽅式运⾏,则必须设置此指令(参见⼿册中的安全部分)。替代⽅案是使⽤的cgi.force_redirect指令。
include_path = ".:/path/to/php/pear"
指定⼀组⽬录⽤于require(), include(), fopen_with_path()函数寻⽂件。
格式和系统的PATH环境变量类似(UNIX下⽤冒号分隔,Windows下⽤分号分隔):UNIX: "/path1:/path2"
Windows: "path1;path2"
在包含路径中使⽤''.''可以允许相对路径,它代表当前⽬录。
user_dir =
SYS
告诉php在使⽤ /~username 打开脚本时到哪个⽬录下去,仅在⾮空时有效。
也就是在⽤户⽬录之下使⽤PHP⽂件的基本⽬录名,例如:"public_html" extension_dir = "/path/to/ph
p"
SYS
存放扩展库(模块)的⽬录,也就是PHP⽤来寻动态扩展模块的⽬录。
Windows下默认为"C:/php5"
[PHP-Core-HTTP]
default_mimetype = "text/html"
default_charset = ;"gb2312"
PHP默认会⾃动输出"Content-Type: text/html" HTTP头。
如果将default_charset指令设为"gb2312",
那么将会⾃动输出"Content-Type: text/html; charset=gb2312"。
[PHP-Core-Unicode]
detect_unicode = On
尚⽆⽂档
[PHP-Core-Misc]
auto_detect_line_endings = Off
是否让PHP⾃动侦测⾏结束符(EOL)。
如果的你脚本必须处理Macintosh⽂件,
或者你运⾏在Macintosh上,同时⼜要处理unix或win32⽂件,
打开这个指令可以让PHP⾃动侦测EOL,以便fgets()和file()函数可以正常⼯作。
但同时也会导致在Unix系统下使⽤回车符(CR)作为项⽬分隔符的⼈遭遇不兼容⾏为。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论