码迷,mamicode.com
首页 > Web开发 > 详细

PHP常用配置

时间:2016-08-13 17:58:47      阅读:453      评论:0      收藏:0      [点我收藏+]

标签:

Php配置文件:php.ini(使用‘;’表示注释)

Php的配置项可以在配置文件中配置,也可以在脚本中使用ini_set()函数临时配置。

 

语言相关配置:

1. engine:设置PHP引擎是否可用,默认值为On,若设置为Off则无法使用PHP

   配置示例:

   engine = On

2. short_open_tag:是否允许PHP脚本使用短开放标记,将“<?php ?>”改为“<? ?>”。

   但这个语法与XML相同,这在某些情况下可能会导致问题,所以一般建议关闭该项。

   配置示例:

   short_open_tag = Off

3. asp_tags:是否支持ASP风格的脚本定界,即“<% %>”。

   配置示例:

   asp_tags = On

4. precision:指定在浮点数表示中显示的有效数字。该项在Win32系统中设置为14,在Linux中设置为12.

   配置示例:

   precision = 14

5. output_buffering:设置是否使用输出缓冲,或者设置输出缓冲区的大小。使用输出缓冲会使性能稍稍下降。

   配置示例:

   output_buffering = 4096

   output_buffering = On

6. output_handler:设置将输出返回给请求用户之前要把所有输出传递给一个函数。例如,

   假设你希望将输出返回给浏览器之前先对所有输出进行压缩,可以将该项配置为PHP压缩处理函数“ob_gzhandler”。

   配置示例:

   output_handler = “ob_gzhandler”

   注意,不能在将output_handler设置为ob_gzhandler的同时启用zlib.output_compression

7. zlib.output_compression:通过设置为“On”或“Off”决定是否在输出返回给浏览器之

   前先自动压缩,通过赋一个整数值,可以启用输出压缩,同时设置压缩缓冲区大小。

   配置示例:

   zlib.output_compression = Off

8. zlib.output_handler:如果zlib库不可用,zlib.output_handler将指定一个特定的压缩库。

9. implicit_flush:启用时,每次调用print()echo(),以及完成各个嵌入的HTML块后,将

   自动清除或刷新其内容的输出缓冲区。当服务器需要非常长的时间来编译结果或完成某

   些计算时,这可能很有用。在这些情况下,可以利用这个特性想用户输出状态更新,而

   不是等待服务器完成整个过程后才输出。

   配置示例:

   implicit_flush = Off

10. ignore_user_abort:是否设置即使在用户中止请求后也坚持完成整个请求。在执行一个

   长请求的时候应当考虑打开它,因为长请求可能会导致用户中途中止或浏览器超时。

   该配置项可以用于实现类似Unix下的crontab(定时任务计划)功能。

   配置示例:

   ignore_user_abort=On

11.zend.enable_gc:设置是否开启PHP的垃圾回收机制。

   配置示例:

   zend.enable_gc=On

 

安全相关配置:

1. safe_mode:是否启用安全模式。

   配置示例:

   safe_mode = On

   打开时,PHP将检查当前脚本的拥有者是否和被操作的文件的拥有者相同,相同则允许

   操作,不同则拒绝操作。开启安全模式的前提是你的目录文件权限已完全分配正确。开

   启该项会减慢程序执行效率。

2. safe_mode_gid:开启时表示修改安全模式的行为,从执行前验证UID改为验证组ID

   配置示例:

   safe_mode_gid = On

3. safe_mode_include_dir:指示多个路径,启动安全模式时在这些路径中将忽略安全模式。

   配置示例:

   safe_mode_include_dir = “/chsfc/data;/chsfc/log”

   (在基于UNIX的系统多个路径之间使用冒号分隔,在Windows中使用分号分隔)

4. safe_mode_env_vars:当启用安全模式时,可以只用此指令允许执行用户的脚本修改某

   些环境变量。可以允许修改多个变量,每个变量之间用逗号分隔。

5. safe_mode_exec_dir:此指令指定一些目录,其中的系统程序可以通过诸如system()

   exec()passthru()等函数执行。为此必须启用安全模式。在所有操作系统中(包括

   Windows),都必须使用斜线(/)作为目录的分隔符。

6. safe_mode_protected_env_vars:此指令保护某些环境变量不能被putenv()函数修改。默

   认情况下,变量LD_LIBRARY_PATH是受保护的,因为如果在运行时修改这个变量可能导

   致不可预知的结果。本项中声明的所有变量都覆盖 safe_mode_allowed_env_vars指令中声明的变量。

7. open_basedir:指定允许PHP进行文件系统操作的目录,任何对这些目录以外的文件操作都会导致错误。

   配置示例:

   openbasedir="C:\inetpub\wwwroot;C:\inetpub\temp"(目录之间由分号分隔)

   (实际上“C:\inetpub\temp”指定的是目录前缀,“C:\inetpub\temp\”指定的才是特定的目录)

8. disable_functions:该指令接受一个用逗号分隔的函数名列表,以禁用特定的函数。

   配置示例:

   disable_functions = chown,chroot

   出于安全原因考虑,禁止使用一些特定的函数,此时若在程序中调用其中的任何一个函

   数都会出现Warning: .....  has been disabled for security reasons in .....

9. disable_classes:出于安全原因,禁用特定的类。禁用多个类时,类名之间使用逗号分隔。

   配置示例:

   disable_classes=”vector,graph”

10. allow_url_includePHP通过此选项控制是否允许通过include/require来执行一个远程文件。

   配置示例:

   allow_url_include = Off

   此项配置为On存在安全漏洞:首先,远程文件可能包含可运行的PHP木马,其次,若

   将远程文件url作为参数传递,用户可以通过传递一个不存在的文件url来访问使得服务

   器报错,然后从报错信息中得到服务器的文档路径,通过一定手段获取服务器上的敏感文件。

11. allow_url_fopen:是否允许打开远程文件。

   配置示例:

   allow_url_fopen = Off

   该项配置为On存在安全漏洞。

12. register_globals:PHP在进程启动时,会根据register_globals的设置,判断是否将$_GET

   $_POST$_COOKIE$_ENV$_SERVER$REQUEST等数组变量里的内容自动注册为全局变量。

   配置示例:

   register_globals = Off

   建议关闭该配置项,开启会增加安全漏洞的数量,并隐藏了数据的来源。如果必须要开

   发一个在register_globals开启的环境中布署的应用,必须要让所有变量在使用前进行初

   始化,当register_globals开启时,任何使用未初始化变量的行为都意味着安全漏洞。

13. enable_dl:设置是否允许使用dl()函数在脚本运行时加载PHP扩展。dl()函数仅在将PHP

   作为apache模块安装时才有效,在除apache以外的多线程服务器上不能正确工作。

   禁用dl()函数主要是出于安全考虑,因为它可以绕过open_basedir指令的限制。在安全

   模式下始终禁用dl()函数,而不管此处如何设置。

   配置示例:

   enable_dl = Off

14. cgi.force_redirect:打开cgi强制重定向为以CGI方式运行的php提供了必要的安全保护,php默认打开了该参数。

   配置示例:

   cgi.force_redirect=1

   注意:在IIS/OmniHTTPD/Xitami上则必须关闭它!

 

性能相关配置:

1. realpath_cache_size:指定PHP使用的realpath(规范化的绝对路径名)缓冲区大小。在

   PHP打开大量文件的系统上应当增大该值以提高性能。

   配置示例:

   realpath_cache_size=16k

   注意:这个realpath_cache_size是每个Apache进程独占的,所以很耗内存,不能设置的太大。

2. realpath_cache_ttlrealpath缓冲区中信息的有效期(单位:秒)。对文件很少变动的系统,可以增大该值以提高性能。

   配置示例:

   realpath_cache_ttl=120

3. auto_globals_jit:是否仅在使用到$_SERVER$_ENV变量时才创建(而不是在脚本一启动

   自动创建)。如果并未在脚本中使用这两个数组,打开该指令将会获得性能上的提升。要

   想该指令生效,必须关闭register_globalsregister_long_arraysregister_argc_argv指令。

   配置示例:

   auto_globals_jit = On

 

错误信息相关配置:

1. log_errorsPHP错误报告日志功能开关。

   配置示例:

   log_errors = On     // 打开PHP错误报告日志功能

2. error_logPHP错误报告日志文件路径。

   配置示例:

   error_log = "D:\wamp\bin\Php7.0.9\php_errors.log"

3. error_reporting:设置PHP的报错级别。

   报错级别参数列表:

   E_ALL:所有的错误和警告(不包括 E_STRICT)

   E_ERROR:致命性的运行时错误

   E_WARNING:运行时警告(非致命性错误)

   E_PARSE:编译时解析错误

   E_NOTICE:运行时提醒(这些经常是你代码中的bug引起的,也可能是有意的行为造成的。)

   E_STRICT:编码标准化警告,允许PHP建议如何修改代码以确保最佳的互操作性向前兼容性。

   E_CORE_ERROR PHP启动时初始化过程中的致命错误

   E_CORE_WARNINGPHP启动时初始化过程中的警告(非致命性错)

   E_COMPILE_ERROR:编译时致命性错

   E_COMPILE_WARNING:编译时警告(非致命性错)

   E_USER_ERROR:用户自定义的错误消息

   E_USER_WARNING:用户自定义的警告消息

   E_USER_NOTICE:用户自定义的提醒消息

   注意:错误报告是位字段,可以将数字加起来得到想要的错误报告等级。

   配置示例:

   Error_reporting = E_ALL & ~E_NOTICE   // 除提示外,显示所有错误

4. display_errors:设定PHP是否将任何错误信息包含在返回给Web服务器的数据流中。

   配置示例:

   display_errors = On

   (PHP将任何由error_reporting所定义的错误信息作为错误数据流返回给Web服务器)

5. display_startup_errors :是否打印php启动时产生的错误。

   配置示例:

   display_startup_errors = Off

6. html_errors:是否在出错信息中使用HTML标记。

   如果打开了html_errors指令,PHP将会在出错信息上显示超链接,直接链接到一个说明

   或者导致这个错误的函数的页面。你可以在网上下载php手册,并将docref_root指令指

   向你本地的手册所在的URL目录中,你还必须设置docref_ext指令来指定文件的扩展名。

   注意:不要在发布的站点上使用这个特性。

   配置示例:

   html_errors = On

   docref_root = "http://localhost/phpmanual/"

   docref_ext = ".html"

7. track_errors:保存最近一个错误/警告消息于变量$php_errormsg中。

   $php_errormsg这个变量只在错误发生的作用域内可用,并且要求track_errors是开启的。

   配置示例:

   track_errors = On

8. log_errors_max_len:设置错误日志文件中每条错误消息的最大长度。

   配置示例:

   log_errors_max_len=1024

9. ignore_repeated_errors:是否忽略重复的错误信息。如果关闭这个参数,错误信息必须

   出现在同一个文件的同一行才会被忽略。

   配置示例:

   ignore_repeated_errors=Off

10. ignore_repeated_source:忽略重复消息时,也忽略消息的来源,重复信息将不会记录它

   是由不同的文件还是不同的源代码产生的。

   配置示例:

   ignore_repeated_source=Off

11. report_memleaks:设置是否报告内存泄露信息。这个参数只在调试编译中起作用,并且

   必须在error_reporting中包含E_WARNING

   配置示例:

   report_memleaks=On

12. error_prepend_string:错误信息之前输出的内容。

   配置示例:

   error_prepend_string = "<span style=‘color: #ff0000‘>"

13. error_append_string:错误信息之后输出的内容。

   配置示例:

   error_append_string = "</span>"

 

资源限制相关配置:

1. max_execution_time:设定任何脚本所能够运行的最长时间,默认值是30秒。

   配置示例:

   max_execution_time = 30

2. memory_limitPHP进程能够占用的内存,单位是M,默认值是128M

   配置示例:

   memory_limit = 128M

3. max_input_nesting_level:设置输入变量的嵌套深度(例如$_GET$_POST$_COOKIE等)。

   配置示例:

   max_input_nesting_level=64

4. max_input_vars:设置输入变量的最大数量(限制分别应用于$_GET$_POST$_COOKIE)。

   配置示例:

   max_input_vars=1000

5. max_input_time:设置每个脚本接收POSTGETPUT等方式输入数据的最大时间限制。

   配置示例:

   max_input_time = 60

6. default_socket_timeout:设置socket超时时间。Socket流从创建到传输再到关闭整个过

   程必须要在这个参数设置的时间内完成,如果不能完成,PHP将会自动结束这个socket

   并返回一个警告。例如:使用file_get_contents()函数获取文件内容的时间会受到限制。

   配置示例:

   default_socket_timeout=60

7. pcre.backtrack_limitPCRE的最大回溯步数限制。该参数影响非贪婪模式的正则匹配。

   配置示例:

   pcre.backtrack_limit=100000

   注意:如果将这个值设置为一个很大的数字,可能会消耗掉所有的进程可用栈,最终导

   致php崩溃。

8. pcre.recursion_limitPCRE的最大递归深度限制。

   配置示例:

   pcre.recursion_limit=100000

   实际项目应用中,最好也对内存进行限定设置memory_limit,这样比较稳妥。

9. post_max_sizePOST方法提交数据的最大大小限制。

   配置示例:

   post_max_size = 8M

   (若PHP程序需要上传大型数据例如照片和视频文件,则应提高upload_max_filesizepost_max_size的值)

 

数据处理相关配置:

1. allow_calltime_pass_reference:是否强制所有参数在函数调用时都按引用传递,不推荐。

   建议在函数定义中指定每个参数在函数调用时的传递方式,传值或传引用。

   配置示例:

   allow_calltime_pass_reference = Off

2. register_argc_argv:是否声明$argv$argc变量。

   命令行运行PHP脚本格式:php  php脚本路径  参数1  参数2  参数3  ...  参数n

   $argv是一个数组,存储命令行参数,其中第一个元素是脚本文件路径名称。

   $argc保存$argv数组元素的个数。

   若不想使用这两个变量,应当关闭它以提高性能。

   配置示例:

   register_argc_argv = Off

3. request_order:设置超全局变量$_REQUEST的值。默认值为“GP”,只包含$_GET$_POST

   而不包括$_COOKIE

   GPC的先后顺序就是设置的array的覆盖顺序(后者覆盖前者)。

   配置示例:

   request_order = "GP"

4. variables_order:设置PHP变量解析顺序,包括$_GET$_POST$_COOKIE$_ENV

   $_SERVER 数组,解析顺序从左到右,后解析新值覆盖旧值。默认设定为EGPCSEnvironmentGETPOSTCookieServer)。  

   配置示例:

   variables_order = "GPCS"

5. arg_separator.output:设置PHP所产生的URL中来分隔参数的分隔符,默认是“&”。

   配置示例:

   arg_separator.output = "&"

   PHP产生URL的函数:http_build_query

6. arg_separator.inputPHP解析URL中的变量时使用的分隔符列表,默认是“&”。

   配置示例:

   arg_separator.input = ";&"(字符串中的任何字符都将被看成分隔符)

7. auto_prepend_fileauto_append_file:分别指定在主文件之前和之后自动解析的文件

   名。这些文件就像调用了include()函数被包含进来一样,因此会使用include_path指令的值。

   注意:如果脚本通过exit()终止,那么自动后缀将不会发生。

8. default_mimetypedefault_charset:分别设置PHP文档的MIME类型和字符集的编码

   方式。这两个信息会在数据包头部字段“Content-Type”中输出。

   配置示例:

   default_mimetype = "text/html"

   default_charset = "UTF-8"

 

文件上传相关配置:

1. file_uploads:是否允许HTTP文件上传。

   配置示例:

   file_uploads=On

2. max_file_uploads:一个请求允许上传的最大文件数量限制。

   配置示例:

   max_file_uploads=20

3. upload_tmp_dir:文件上传时存放文件的临时目录(必须是PHP进程用户可写的目录)。

   配置示例:

   upload_tmp_dir = "D:/wamp/phpfileuploadtmp"

4. upload_max_filesize:上传文件的最大大小限制。

   配置示例:

   upload_max_filesize = 2M

 

Session相关配置:

1. session.save_path:设置session文件存放的位置。

   配置示例:

   session.save_path = "D:/wamp/phpsessiontmp"

   为了保证服务器的安全,最好设置为外网无法访问的目录。

2. session.save_handler:设置session数据的存取方式。默认以文件方式存取。

   配置示例:

   session.save_handler = files   // 文件方式

   session.save_handler = user   // 数据库方式

3. session.use_cookies:是否使用cookies在客户端保存会话sessionid,默认为采用cookies

   配置示例:

   session.use_cookies = 1

4. session.use_only_cookies:是否仅仅使用cookie在客户端保存会话sessionid,这个选项

   可以使管理员禁止用户通过URL来传递sessionid,默认为0,如果禁用的话,客户端如果禁用cookie将使session无法工作。

   配置示例:

   session.use_only_cookies = 1

5. session.name:设置session名称。

   配置示例:

   session.name = PHPSESSID

6. session.auto_start:是否自动启动session,默认不启动。若不自动启动,每个PHP脚本

   头部都需要通过session_start()函数来启动session

   配置示例:

   session.auto_start = 0

7. session.cookie_lifetime:传递sessionidcookie有效期,0表示仅在浏览器打开期间有效。

   配置示例:

   session.cookie_lifetime = 0

8. session.gc_probabilitysession.gc_divisor:定义每次初始化会话时,启动垃圾回收程序

   的概率。计算公式:session.gc_probability / session.gc_divisor。对会话页面访问越频繁,概率就应当越小。

   配置示例:

   session.gc_probability = 1

   session.gc_divisor = 1000

9. session.gc_maxlifetime:设定保存的session文件生存期,超过此参数设定秒数后,保存

   的数据将被视为’垃圾’并由垃圾回收程序清理。如果你在session.save_path选项中设

   定使用子目录来存储session数据文件,垃圾回收程序不会自动启动,你必须使用自己编

   写的shell脚本、cron项或者其他办法来执行垃圾搜集。

   配置示例:

   session.gc_maxlifetime = 1440

10. session.use_trans_sid:设置当客户端禁用Cookie时,是否将sessionid以参数的形式自动附加到URL末尾。

   配置示例:

   session.use_trans_sid = 1

   (注意:要配合session.use_only_cookies=0配置使用,否则无效)

11. session.bug_compat_42session.bug_compat_warnPHP4.2之前的版本有一个未注明

   的"特性"(也可看作bug):即使在"register_globals   =   Off"的情况下也允许初始化全局

   session变量,在4.2.3以后, 为了兼容以前的模式, PHP引入了bug_compat_42, 当启用这

   个选项以后(默认启用), PHP将容许自动将SESSION中的变量做为全局变量使用. 只不过

   如果bug_compat_warn选项开启的情况下, 会报告这个特性的被使用.

   配置示例:

   session.bug_compat_42 = On

   session.bug_compat_warn = On

12. session.hash_bits_per_character:指定在session_id字符串中的每个字符内保存多少位二

   进制数,这些二进制数是hash函数的运算结果。影响session id的长度,该值减小时session id长度增大。

   配置示例:

   session.hash_bits_per_character = 5

13. url_rewriter.tags:指定重写哪些HTML标签来包含session_id

   (仅在"session.use_trans_sid"打开的情况下有效)

   formfieldset比较特殊,如果你包含他们,URL重写器将添加一个隐藏的"<input>",它

   包含了本应当额外追加到URL上的信息。如果你想兼容XHTML标准,请使用"fieldset"代替"form"

   注意:所有合法的项都需要一个等号——即使后面没有值。

   配置示例:

   url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

 

其他配置:

1. extension_dir:存放扩展库(模块)的目录,也就是PHP用来寻找动态连接扩展库的目录。

   PHP扩展库文件都存放在PHP安装目录下的ext目录下。

   配置示例:

   extension_dir = "D:\wamp\bin\Php7.0.9\ext"

2. extension:对于每个需要激活的扩展,都需要一行相应的“extension=”语句来说明PHP启动时需要加载哪些扩展。

   配置示例:

   配置一个文件名:

   extension=php_mysqli.dll

   或者配置一个路径:

   extension="D:\wamp\bin\Php7.0.9\ext\php_mysqli.dll"

   (如果只是配置文件名,PHP会在extension_dir配置的目录下查找)

3. date.timezone:设置时区。该设置影响PHP中所有的日期、时间函数。

   配置示例:

   date.timezone = Asia/Shanghai

4. doc_rootPHP页面在服务器上的根目录。

   配置示例:

   doc_root = "D:\wamp\www"

5. magic_quotes_gpcPHP根据其配置决定是否将对所有GPC参数($_GET,$_POST,$_COOKIE)

   进行addslashes处理[既转义单引号、双引号、反斜线和nullbyte]

   配置示例:

   magic_quotes_gpc = On

   将magic_quotes_gpc设置为On时存在性能损耗。

6. expose_php:是否隐藏PHP版本信息。

   配置示例:

   expose_php = Off

   若将该配置项开启,服务器发出的http包头部都会包含PHP的版本信息,如:

   X-Powered-By:PHP/7.0.9,若关闭则不会出现。

7. user_ini.filenameuser_ini.cache_ttluser_ini.filename设置用户可以自定义的php.ini

   文件的名称;读取文件后会缓存起来,user_ini.cache_ttl设置重新读取的时间间隔。

   配置示例:

   user_ini.filename = ".user.ini"

   user_ini.cache_ttl = 300

8. include_path:指定一组目录用于require()include()fopen_with_path()函数寻找文件。

   目录之间Unix下用冒号分隔,Windows用分号分隔。

   配置示例:

   Unixinclude_path=".:/php/includes"

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

9. sys_temp_dirPHP用于存放临时文件的目录。

   配置示例:

   sys_temp_dir = "C:\Windows\TEMP"

10. cgi.nph:如果该参数打开,那么它会强制cgi对每个http请求始终发送状态码200.

   配置示例:

   cgi.nph=1

11. SMTPmail()函数中用来发送邮件的SMTP服务器的主机名或IP地址,仅用于win32.

   配置示例:

   SMTP=localhost

12. smtp_portSMTP服务器的端口号,仅用于win32.

   配置示例:

   smtp_port=25

13. sendmail_from:发送邮件时使用的“From:”头中的邮件地址,仅用于win32

   配置示例:

   sendmail_from = me@example.com

14. cgi.force_redirect:这是个在许多Web服务器中都需要被激活的目录安全功能,不设置时

   服务器默认开启。但是在IIS服务器中一定要把这个功能关闭,否则会导致PHP引擎在

   Windows中出错。

   配置示例:

   cgi.force_redirect = 1      // 1开启,0关闭

15. cgi.fix_pathinfo:此指令可以允许PHP遵从CGI规则访问真实路径信息。IISFastCGI

   现需要激活此指令。

   配置示例:

   cgi.fix_pathinfo = 1

16. Fastcgi.impersonateIIS 下的 FastCGI 支持模拟呼叫用户方安全令牌的能力。这使得 IIS

   可以定义请求方的安全上下文。

   配置示例:

   Fastcgi.impersonate = 1

17. Fastcgi.loggingFastCGI 日志在 IIS 下应被关闭。如果激活,则任何类的任何消息都被

   FastCGI 视为错误条件从而导致 IIS 产生 HTTP 500 错误。

   配置示例:

   Fastcgi.loggingFastCGI = 0

 

PHP常用配置

标签:

原文地址:http://www.cnblogs.com/wujuntian/p/5768336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!