php.ini

在 PHP 启动时被读取。对于服务器模块版本的 PHP,仅在 web 服务器启动时读取

一次。对于 CGI 和 CLI 版本,每次调用都会读取。

* Apache web 服务器在启动时会把目录转到根目录,这将导致 PHP 尝试在根目录

下读取 php.ini,如果存在的话。

* 在 php.ini 中可以使用环境变量。

.user.ini 文件

自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件

仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使

用 Apache,则用 .htaccess 文件有同样效果。

启用全局变量

register_globals = on

有些程序例如OSC需要启用全局变量.这个设置的作用是关闭自动注册的全局变量,

在设置为On的时候,php会将$_POST,$_GET,$_COOKIE,$_ENV,$_SESSION数组中的$key=>$value直

接注册为变量,比如$_POST['username']就会被注册为$username。

虽然方便了调用,但是会有三个问题:

• 不知道变量是哪里来的,$_POST来的还是$_SESSION来的呢?非常不方便别人阅读代码。

• 变量之间互相覆盖,引起不必要的麻烦。

• 安全问题。所以要设置为Off。

短标签

short_open_tag = On

这个设置决定是否允许使用 PHP 代码开始标志的缩写形式(<? ?>)。如果禁用了,必须使用 PHP 代码开始

标志的完整形式(<?php ?>)。

本指令也会影响到缩写形式 <?=,它和 <? echo 等价。使用此缩写需要 short_open_tag 的值为 On。 从

PHP 5.4.0 起, <?= 总是可用的。

安全模式

safe_mode = off

php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),同时把很多文件

操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd,但是默认的php.ini是没有打

开安全模式的

安全模式下执行程序主目录

safe_mode_exec_dir = /var/www/html

如果 PHP 使用了安全模式,system() 和其它程序执行函数将拒绝启动不在此目录中的程序。必须使用 / 作为

目录分隔符,包括 Windows 中。 简单来说,就是这个目录下可以执行。

禁用类/函数

disable_classes = , disable_functions = , disable_functions = opendir,readdir,scandir,fopen,unlink

禁用某些类,禁止某些函数。接受逗号分隔的函数名列表作为参数。只能设置在 php.ini 中。

设置上传文件大小

file_uploads = on

upload_max_filesize = 8M

post_max_size = 8M

POST的数值要大于等于upload,否则upload不起作用。

文件上传临时目录

upload_tmp_dir =

上传临时文件保存的目录,需要可写,如果不设置,则采用系统临时目录。(/tmp)

用户访问目录限制

open_basedir = .:/tmp/

使用open_basedir选项能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问不应该访问的文件,

一定程度上限制了phpshell的危害.我们一般可以设置为只能访问网站目录,表示允许访问当前目录(即PHP脚本

文件所在之目录)和/tmp/目录,有效防止php木马跨站运行。

错误信息控制

display_error = On

是否将错误信息作为输出的一部分,站点发布后应该关闭这项功能,以免暴露信息。调试的时候当然是要On的,

不然就什么错误信息也看不到了。

设置错误报告级别

error_reporting = E_ALL

这个设置的作用是将错误级别设置为最高,可以显示所有的问题,方便查错,也有利于写出高质量的代码。

日志级别是一些常量,在php.ini中有写,推荐使用 E_ALL | E_STRICT,即所有级别。

错误日志

error_log =

错误日志的位置,必须对web用户可写入,如果不定义则默认写入到web服务器的错误日志中去 。

log_errors = on

如上所说,建议将错误日志输出到文件,而不是直接输出到前端。

log_errors_max_length = 1024

错误日志关联信息的最大长度,设为0表示无限长度。

魔术引号 【Warning:本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。】

magic_quotes_gpc = On

magic_quotes_runtime = Off

为 GPC (Get/Post/Cookie) 操作设置 magic_quotes 状态。 当 magic_quotes 为 on,所有的 ' (单引号)、"

(双引号)、\(反斜杠)和 NULL 被一个反斜杠自动转义。

是否允许打开远程文件

allow_url_fopen = on

本选项激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象例如文件。默认的封装协议提供用 ftp 和

http 协议来访问远程文件,一些扩展库例如 zlib 可能会注册更多的封装协议。

是否允许包含远程文件

allow_url_include = off

本选项激活允许 include, include_once, require, require_once等函数使用 URL 形式的 fopen 封装协议。简

单来说就是可以包含远程文件。

web安全之php中常见的INI文件配置的更多相关文章

  1. 向php文件中添加php.ini文件

    向php文件中添加php.ini文件 默认情况下,php是没有php.ini配置文件的,必须手工添加php.ini文件 在php安装目录中,复制php.ini文件到/usr/local/php/lib ...

  2. [转载]windows7中没用boot.ini文件而是改用BCDEDIT来配置了

    原文地址:windows7中没用boot.ini文件而是改用BCDEDIT来配置了作者:开心骝哥 本人安装的Win7,因为机上有两个系统,一个dos系统,一个win7系统,开机时总是会在系统选择的界面 ...

  3. 云服务器 ECS Linux 系统中常见的日志文件介绍

    云服务器 ECS Linux 系统中,日志文件是非常重要的文件,它们记录了很多系统中重要的事.Linux 系统中常见日志文件概述如下: /var/log/cron可以在 cron 文件中检查 cron ...

  4. InnoSetup中枚举出INI文件的所有sections和键值

    原文 http://blog.chinaunix.net/uid-23480430-id-3016899.html InnoSetup支持一些INI文件操作函数, 例如GetIniString,Ini ...

  5. IDEA中怎么创建ini文件

    首先博主在这使用的是idea的2019.3.2的版本,不知道的话可以打开help菜单的about查看 第一步: 具体需要在setings安装ini插件 第二步: 在File Types中查看ini,没 ...

  6. [问题解决]eclipse.ini 文件配置jdk版本

    想要多个JDK 和 多个eclipse在一台电脑上同时运行无需配置环境变量,只需修改eclipse.ini文件即可启动eclipse. -vm D:\javaSE1.\jdk1.\bin\javaw. ...

  7. Django模版中加载静态文件配置详解

    .settings.INSTALLED_APPS下添加:django.contrib.staticfiles .settings.py下添加:STATIC_URL = '/static/' . ()在 ...

  8. tomcat中的server.xml文件配置了URIEncoding="UTF-8"需要注意的问题

    1.      get请求传递中文时本地连正式库访问都正常,正式环境下单独访问报错 代码: 请求:project/projectInfo/export/?cks=’项目类型 public String ...

  9. 一些常见的pro文件配置

    UI_DIR = ./ui #ui文件目录 TARGET = Test #最终生成目标名 DESTDIR = $$PWD/../test #目标生成目录,$$PWD表示当前目录下 DLLDESTDIR ...

随机推荐

  1. System类入门学习

    System类 System类代表系统,系统级的很多属性和控制方法都放置在该类的内部.该类位于java.lang包.其包含一些有用的字段和方法,不能被实例化 system中包含了in.out和err三 ...

  2. 2019年研究生数学建模D题《汽车行驶工况构建》解析

    正在整理...

  3. 如何判断前后端bug

    测试工程师不只是负责发现问题,除了发现问题这种基本功外,定位问题,提出解决方案,提出预防方案也是要掌握的技能.这里先说定位问题的要求,定位问题要向深入,前提当然是对功能.产品的流程.开发方案.开发人员 ...

  4. embedding技术

    目录 word2vec 负采样 目标函数 反向梯度 层次softmax NPLM的目标函数和反向梯度 目标函数 反向梯度 GNN(图神经网络) deepwalk node2vec 附录 word2ve ...

  5. Spark的Java开发环境构建

    为开发和调试SPark应用程序设置的完整的开发环境.这里,我们将使用Java,其实SPark还支持使用Scala, Python和R.我们将使用IntelliJ作为IDE,因为我们对于eclipse再 ...

  6. linux 防火墙相关命令

    1.系统命令systemctl start firewalld #启动 systemctl status firewalld #查看运行状态 systemctl stop firewalld #关闭 ...

  7. 【SQL server基础】SQL视图加密,永久隐藏视图定义的文本

    SQL可以对视图进行加密.也就是,可永久隐藏视图定义的文本. 注意   此操作不可逆.加密视图后,无法再修改它,因为无法再看到视图定义.如果需要修改加密视图,则必须删除它并重新创建另一个视图. 示例代 ...

  8. 设计模式——统一建模语言UML

    目录 一.UML的结构 1.1视图 1.2图 1.3模型元素 二.类图 2.1类与类图 2.2类之间的关系 三.序列图 3.1序列图定义 3.2序列图组成元素与绘制 四.状态图 4.1状态图定义 4. ...

  9. Spring Security 前后端分离登录,非法请求直接返回 JSON

    hello 各位小伙伴,国庆节终于过完啦,松哥也回来啦,今天开始咱们继续发干货! 关于 Spring Security,松哥之前发过多篇文章和大家聊聊这个安全框架的使用: 手把手带你入门 Spring ...

  10. Fast Earth - 文本 绘制,如何实现三维空间中绘制屏幕大小的文字?

    如题:先上一张图,在说是如何实现的 实现上图效果,有如下三种方式: 1. 屏幕坐标绘制点要素,即将经纬度坐标转换成屏幕坐标方式绘制,大多数GIS系统都是采用这种方式: 优点:实现方式简单,效果较好 缺 ...