PHP强化之24 - 常用配置项

一、简介

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

二、常用配置项

1、错误信息相关配置

1)display_errors
设定PHP是否将任何错误信息包含在返回给Web服务器的数据流中。(PHP将任何由error_reporting所定义的错误信息作为错误数据流返回给Web服务器)
如:display_errors = On

2)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_WARNING:PHP启动时初始化过程中的警告(非致命性错)
E_COMPILE_ERROR:编译时致命性错
E_COMPILE_WARNING:编译时警告(非致命性错)
E_USER_ERROR:用户自定义的错误消息
E_USER_WARNING:用户自定义的警告消息
E_USER_NOTICE:用户自定义的提醒消息

如:

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

3)log_errors
PHP错误报告日志功能开关。
如:log_errors = On

4)error_log
PHP错误报告日志文件路径。
如:error_log = "D:\www\php\php_errors.log"

5)display_startup_errors
是否打印php启动时产生的错误。
如:display_startup_errors = On

6)track_errors
保存最近一个错误/警告消息于变量php_errormsg中。php_errormsg这个变量只在错误发生的作用域内可用,并且要求track_errors是开启的。

7)report_memleaks
设置是否报告内存泄露信息。这个参数只在调试编译中起作用,并且必须在error_reporting中包含E_WARNING。

8)error_prepend_string
错误信息之前输出的内容。
如:error_prepend_string = "<span style='color: #ff0000'>"

9)error_append_string
错误信息之后输出的内容。
如:error_append_string = "</span>"

2、资源限制相关配置

1)post_max_size
POST方法提交数据的最大大小限制。

允许的POST数据最大字节长度。此设定也影响到文件上传。如果POST数据超出限制,那么$_POST和$_FILES将会为空。要上传大文件,该值必须大于upload_max_filesize指令的值。如果启用了内存限制,那么该值应当小于memory_limit指令的值。

如:post_max_size = 8M

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

2)memory_limit
PHP进程能够占用的最大内存,单位是M,默认值是128M。
如:memory_limit = 128M

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

4)max_input_nesting_level
设置输入变量的嵌套深度(例如_GET、_POST、$_COOKIE等)。
如:max_input_nesting_level = 64

5)max_input_vars
设置输入变量的最大数量(限制分别应用于_GET、_POST、$_COOKIE)。
如:max_input_vars = 1000

6)max_input_time
设置每个脚本接收POST、GET及PUT等方式输入数据的最大时间限制。
如:max_input_time = 60

7)default_socket_timeout
设置socket超时时间。Socket流从创建到传输再到关闭整个过程必须要在这个参数设置的时间内完成,如果不能完成,PHP将会自动结束这个socket并返回一个警告。例如:使用file_get_contents()函数获取文件内容的时间会受到限制。
如:default_socket_timeout = 60

3、文件上传相关配置

1)file_uploads
是否允许HTTP文件上传。
如:file_uploads = On

2)upload_max_filesize
允许上传的文件的最大尺寸。
如:upload_max_filesize = 2M

3)max_file_uploads
一个请求允许上传的最大文件数量限制。
如:max_file_uploads = 20

4)upload_tmp_dir
文件上传时存放文件的临时目录(必须是PHP进程用户可写的目录)。
如:upload_tmp_dir = "D:/wamp/phpfileuploadtmp"

4、Session相关配置

1)session.save_path
设置session文件存放的位置(文件夹应该是已经存在的)。
如:session.save_path = "D:/www/phpsessiontmp"

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

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
传递sessionid的cookie有效期,0表示仅在浏览器打开期间有效。
如:session.cookie_lifetime = 0

8) session.gc_probability与session.gc_divisor
定义每次初始化会话时,启动垃圾回收程序的概率。
计算公式:session.gc_probability / session.gc_divisor。对会话页面访问越频繁,概率就应当越小。
如:session.gc_probability = 1session.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配置使用,否则无效

5、安全相关配置

1)register_globals
PHP在进程启动时,会根据register_globals的设置,判断是否将$_GET、$_POST、$_COOKIE、$_ENV、$_SERVER、$REQUEST等数组变量里的内容自动注册为全局变量。(注:Removed in PHP 5.4.0.)

建议关闭该配置项,开启会增加安全漏洞的数量,并隐藏了数据的来源。如果必须要开发一个在register_globals开启的环境中布署的应用,必须要让所有变量在使用前进行初始化,当register_globals开启时,任何使用未初始化变量的行为都意味着安全漏洞。

2)allow_url_fopen
是否允许打开远程文件。(出于安全性考虑,此选项只能在 php.ini 中设置。)

本选项激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象例如文件。默认的封装协议提供用 ftp 和 http协议来访问远程文件,一些扩展库例如 zlib 可能会注册更多的封装协议。

3)allow_url_include

此选项允许有以下功能使用URL识别的fopen封装:包括,include,include_once,require,require_once。此设置要求allow_url_fopen选项要开启。

4)safe_mode
是否启用安全模式。

打开时,PHP将检查当前脚本的拥有者是否和被操作的文件的拥有者相同,相同则允许操作,不同则拒绝操作。开启安全模式的前提是你的目录文件权限已完全分配正确。开启该项会减慢程序执行效率。

6、语言相关配置

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

2)short_open_tag
是否允许PHP脚本使用短开放标记,将“<?php ?>”改为“<? ?>”。但这个语法与XML相同,这在某些情况下可能会导致问题,所以一般建议关闭该项。

3)output_buffering
设置是否使用输出缓冲,或者设置输出缓冲区的大小。使用输出缓冲会使性能稍稍下降。
如:output_buffering = 4096

4)zend.enable_gc
设置是否开启PHP的垃圾回收机制。
默认:zend.enable_gc = On

7、其它配置

1)date.timezone
定义日期函数使用的默认时区。
如:date.timezone = Asia/Shanghai

2)extension_dir
存放扩展库(模块)的目录,也就是PHP用来寻找动态连接扩展库的目录。PHP扩展库文件都存放在PHP安装目录下的ext目录下。
如:extension_dir = "D:\www\bin\php7.0.9\ext"

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

4)doc_root
PHP页面在服务器上的根目录。
如:doc_root = "D:\www"

5)include_path
指定一组目录用于require(),include(),fopen_with_path()函数寻找文件。目录之间Unix下用冒号分隔,Windows用分号分隔。
如:include_path=".:/php/includes"include_path=".;c:\php\includes"

6)sys_temp_dir
PHP用于存放临时文件的目录。
如:sys_temp_dir = "/tmp"

三、参考

官方手册:http://www.php.net/manual/zh/ini.core.php

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • php.ini设置,上传大文件: post_max_size = 128Mupload_max_filesize ...
    bycall阅读 6,736评论 3 64
  • PHP是一个简单易学,功能强大的语言,尤其在Web开发,开发效率高,方便快捷。研究一下php.ini了解PHP相关...
    雷雪松的简书阅读 2,946评论 3 64
  • centos7为基准 1、更改YUM源: /bin/mv CentOS-Base.repo CentOS-Base...
    SkTj阅读 3,869评论 0 4
  • 项目开发常见流程介绍 需求调研 项目经理------>需求说明书 软件设计书 项目经理------>...
    _1633_阅读 1,399评论 1 6
  • 人生如叶,一生一落。 一生就是开始,一落便是终结。 人和叶子一样,有繁华的时候, 当然也有凋落的一天, 人和叶子一...
    亓雪心阅读 339评论 0 0