php核心配置

*PHP_INI_模式的定义
模式 含义
PHP_INI_USER 可在用户脚本(例如 ini_set() )或 Windows 注册表(自 PHP 5.3 起)以及 .user.ini 中设定
PHP_INI_PERDIR 可在 php.ini,.htaccess 或 httpd.conf 中设定
PHP_INI_SYSTEM 可在 php.ini 或 httpd.conf 中设定
PHP_INI_ALL 可在任何地方设定
php.ini only 仅可在php.in中配置
这些模式决定着一个 PHP 的指令在何时何地,是否能够被设定。手册中的每个指令都有其所属的模式。例如有些指令可以在 PHP 脚本中用 ini_set() 来设定,而有些则只能在 php.ini 或 httpd.conf 中。

例如 output_buffering指令是属于 PHP_INI_PERDIR,因而就不能用 ini_set() 来设定。但是 display_errors指令是属于 PHP_INI_ALL 因而就可以在任何地方被设定,包括 ini_set()。

具体配置

1.register_globasls(全局变量注册开关)
该选项设置为on的情况下,会直接把用户get,post等方式提交上来的参数注册成全局变量并初始化值为参数对应的值,使得提交的数据可以直接在脚本使用。register_globals在php版本小于4.2.3是设置为PHP_INI_ALL,从php5.3.0起被废除,不推荐使用,在php5.4.0中移除该选项。
2.allow_url_include(是否允许包含远程文件)
在on的情况下可直接包含远程文件,当存在include( v a r ) 且 var)且 var)var可控时,可以直接控制KaTeX parse error: Expected 'EOF', got '\)' at position 226: …('),双引号("),反斜杠(\̲)̲,空字符(NULL)的前面加上…SERVER变量,导致很多类似client-ip,referer一类的漏洞能够被利用。在php5.3后不推荐使用,php5.4之后干脆直接取消,所以在下载php5.4之后配置文件中找不到这个配置选项,在php版本小于4.2.3是,配置范围是PHP_INI_ALL,在php4.2.3之后是PHP_INI_PERDIR。
4.magic_quote_runtime(魔术引号自动过滤)
也是在单引号(’),双引号("),反斜杠(\),空字符(NULL)的前面加上反斜杠(\),跟magic_quote_gpc的区别是,处理的对象不一样,该配置只对从数据库或者文件中获取的数据进行过滤,在php5.4之后也被取消,配置范围是PHP_INI_ALL。
但是只有部分函数受他影响,所以在某些情况下这个配置是可以绕过的。
5.magic_quote_sybase(魔术引号自动过滤)
当设置为on时会覆盖magic_quote_gpc=on的配置,也是对get,post,cookie进行处理,但是magic_quote_sybase仅仅是转义了空字符和把单引号(’)变成了双引号("),配置PHP_INI_ALL,在php5.4被移除。
6.safe_mode(安全模式)
安全模式是php内嵌的一种安全机制,配置范围是PHP_INI_SYSTEM,在php5.4后被取消,联动可以设置的指令safe_mode_dir,safe_mode_exec_dir,safe_mode_allowed_env_vars,safe_mode_protected_env_vars。
这个配置会出现下面限制:
1)所有文件操作函数都会受到限制。
2)通过函数popen(),system(),exec()等函数执行命令或者程序会提示错误。
7.open_basedir PHP可访问目录
该指令用来限制php只能访问哪些目录,通常我们只需要设置web文件目录即可,如果需要加载外部脚本,也需要把脚本所在目录路径加入到open_dasedir指令中,多个目录以分号分割。需要注意的是,指定的限制实际是前缀,而不是目录名。列如,如果配置open_basedir=/www/a,那么目录/www/a和/www/ab都是可以访问的,所以如果要将访问仅限制在指定的目录内,请用斜线结束路径名,如open_basedir=/www/a/。
当配置后,执行脚本访问其他文件都需要验证文件路径,因此会影响效率,该指令的配置范围在php小于5.2.3时是PHP_INI_SYSTEM,在php版本大于5.2.3是PHP_INI_ALL。
8.disable_functions(禁用函数)
这是为了更安全的运行php,当你想用本指令禁止一些危险函数时,切记一定要把dl()函数也加到禁止列表,因为攻击者可以利用dl()函数来加载自定义的php扩展以突破disable_functions指令的限制。
本指令的配置范围为php.ini only。配置禁用函数时使用逗号分隔函数名。
9.display_errors和error_reporting 错误显示
display_errors表明是否显示php脚本内部错误信息的选项,在调试php的时候,通常都把php错误显示打开,但在生产环境中,建议关闭php错误回显,在设置display_errors=on时,还可以配置的一个指令是error_reporting,这个选项用来配置错误显示的级别,可使用数字也可使用内置常量配置,数字格式与常量格式的详细如下:
数字 常量 描述
1 E_ERROR 运行时致命的错误。不能修复的错误。停止执行脚本。
2 E_WARNING 运行时非致命的错误。没有停止执行脚本。
4 E_PARSE 编译时的解析错误。解析错误应该只由解析器生成。
8 E_NOTICE 运行时的通知。脚本发现可能是一个错误,但也可能在正常运行脚本时发生。
16 E_CORE_ERROR PHP 启动时的致命错误。这就如同 PHP 核心的 E_ERROR。
32 E_CORE_WARNING PHP 启动时的非致命错误。这就如同 PHP 核心的 E_WARNING。
64 E_COMPILE_ERROR 编译时致命的错误。这就如同由 Zend 脚本引擎生成的 E_ERROR。
128 E_COMPILE_WARNING 编译时非致命的错误。这就如同由 Zend 脚本引擎生成的 E_WARNING。
256 E_USER_ERROR 用户生成的致命错误。这就如同由程序员使用 PHP 函数 trigger_error() 生成的 E_ERROR。
512 E_USER_WARNING 用户生成的非致命错误。这就如同由程序员使用 PHP 函数 trigger_error() 生成的 E_WARNING。
1024 E_USER_NOTICE 用户生成的通知。这就如同由程序员使用 PHP 函数 trigger_error() 生成的 E_NOTICE。
2048 E_STRICT 运行时的通知。PHP 建议您改变代码,以提高代码的互用性和兼容性。
4096 E_RECOVERABLE_ERROR 可捕获的致命错误。这就如同一个可以由用户定义的句柄捕获的 E_ERROR(见 set_error_handler())。
8191 E_ALL 所有的错误和警告的级别,除了 E_STRICT(自 PHP 6.0 起,E_STRICT 将作为 E_ALL的一部分)。
这两个指令的配置范围都是PHP_INI_ALL。
会影响到安全的大概就是这些,下面列出一些常见的指令及说明
指令 可配置范围 说明
safe
mode_gid PHP_INI_SYSTEM 以安全模式打开 文件时默认使用UID来比对:设置本指令为on时使用GID做宽松的比对
expose_php php.ini only 是否在服务器返回信息HTTP头显示PHP版本
max_cxecution_time PHP_INI_ALL 每个脚本最多执行秒数
memory_limit PHP_INI_ALL 每个脚本能够使用的最大内存数量
log_ errors PHP_INI_ALL 将错误输人到日志文件
log_ errors_max_len PHP_INI_ALL 设定log errors 的最大长度
variables_order PHP_INI_PERDIR 此指令描述了PHP注册GET、POST. Cookie,环境和内置变量的顺序,注册使用从左往右的顺序,新的值会覆盖旧的值
post_max_size PHP_INI_PERDIR PHP可以接受的最大的POST数据大小
auto_prepend_file PHP_INI_PERDIR 在任何PHP文档之前自动包含的文件
auto_append_file PHP_INI_PERDIR 在任何PHP文档之后自动包含的文件
extension_dir PHP_INI_SYSTEM 可加载的扩展(模块)的目录位置
file_uploads PHP_INI_SYSTEM 是否允许HTTP文件上传
upload_tmp_ dir PHP_INI_SYSTEM 对于HTTP上传文件的临时文件目录
upload_max_filesize PHP_INI_SYSTEM 允许上传的最大文件大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值