阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

php.ini参数调优详细分析

407次阅读
没有评论

共计 3962 个字符,预计需要花费 10 分钟才能阅读完成。

无论是 Apache 还是 Nginx,php.ini 都是适合的,而 php-fpm.conf 适合 nginx+fcgi 的配置

1、打开 php 的安全模式

PHP 的安全模式是个非常重要的 PHP 内嵌的安全机制,能够控制一些 PHP 中的函数执行,比如 system(),同时吧很多文件操作的函数进行了权限控制。

该参数配置如下

safe_mode = Off    #是否启用安全模式。

打开时,PHP 将检查当前脚本的拥有者是否和被操作的文件的拥有者相同。如上,默认的 php.ini 是没有打开安全模式的,我们把它打开如下:

safe_mode = On

2、用户组安全

当 safe_mode 打开时,safe_mode_gid 被关闭,那么 php 脚本能够对文件进行访问,而且相同组的用户也能够对文件进行访问。建议设置为 safe_mode_gid = Off。

如果不进行设置,可能我们无法对我们服务器网站目录下的文件进行操作了,比如我们需要对文件进行操作的时候。

3、关闭危险的函数

如果打开了安全模式,那么函数禁止是可以不需要的,但是我们为了安全还是考虑进去。比如,我们觉得不希望执行包括 system()等在内的能够执行命令的 PHP 函数,或者能够查看 PHP 信息的 phpinfo()等函数,那么我们就可以禁止它们,方法如下:

disable_functions = system,passthru,exec,shell_exec,popen,phpinfo

如果你要禁止任何文件和目录的操作,那么可以关闭很多文件操作。

disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir,rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown

以上只是列出了部分比较常用的文件处理函数,也可以把上面执行命令函数和这个函数结合,就能够抵制大部分的 phpshell 了,该参数默认为 disable_functions =

4、关闭 PHP 版本信息在 http 头中的泄露

为了防止黑客获取服务器中 PHP 版本的信息,可以关闭该信息泄露在 http 头中。

该参数默认配置如下:

expose_php = On

是否暴露 PHP 被安装在服务器上的事实(在 http 头中加上其签名)。它不会有安全上的直接威胁,但它使得客户端知道服务器上安装了 PHP。建议设置为:

expose_php = Off

这样黑客就无法在客户端看到 PHP 的信息。

5、关闭注册全局变量。

在 PHP 中提交的变量,包括使用 POST 或者 GET 提交的变量,都将自动注册为全局变量,能够直接访问,这是对服务器非常不安全的,所以我们不能让它注册为全局变量,就把注册全局变量选项关闭。该参数默认配置如下:

register_globals = Off

打开该指令可能会导致严重的安全问题,除非你的脚本经过非常仔细的检查。

推荐使用预定义的超全局变量:$_ENV,$_GET,$_POST,$_COOKIE,$_SERVER,该指令受 variables_order 指令的影响。PHP6 中已经删除此指令。建议设置为:

register_globals = Off

这样设置之后,获取对应变量的时候就要采用合理方式,比如获取 GET 提交的变量 var,那么就要用 $_GET[‘var’]来进行获取,这个是 PHP 程序员需要注意的。

提示:关闭此项可能会导致老的 PHP 程序出问题,请根据情况处理。

如果 PHP 程序没有指明需要 register_globals 的话,最好把 register_globals 设置为 Off,这样可以避免很多安全问题。

举个例子,有一个这样的 PHP 文件片段叫做 test.php

// 前面的代码

if ($authorised) {

// 执行一些受保护的动作

}

// 其余的代码

}

?>

如果 register_globals 是打开的话,入侵者可以通过提交这样一个请求来绕过验证。

6、打开 magic_quotes_gpc 来防止 SQL 注入

SQL 注入是非常危险的问题,轻则网站后台被入侵,重则整个服务器沦陷,所以一定要小心,php.ini 中有一个设置。

magic_quotes_gpc = Off

这个默认是关闭的,如果它打开后将自动把用户提交对 SQL 的查询进行转换,比如把’转为 \’等,这对防止 SQL 注入有重大作用,所以我们推荐设置为:

magic_quotes_gpc = On

7、错误信息控制

一般 PHP 在没有连接到数据库或者其他情况下会有提示错误,一般错误信息中会包含 PHP 脚本当前的路径信息或者查询的 SQL 语句等信息,这类信息提供给黑客后是不安全的,所以一般服务器建议禁止错误提示。该参数默认配置如下:

display_errors = Off

是否将错误信息座位输出的一部分显示给终端用户。应用调试时可以打开,方便查看错误。在最终发布到 web 站点上,强烈建议关掉这个特性,并使错误日志代替(参照下面)。设置为:

display_errors = Off

如果确实是要显示错误信息,一定要设置显示错误的级别,比如只显示警告以上的信息。

error_reporting = E_WARNING & E_ERROR

8、错误日志

建议在关闭 display_errors 后能够把错误信息记录下来,便于查×××器错误的原因。

log_errors = On

同时也要设置错误日志存放的目录,建议跟 Apache 的日志存在一起。

error_log = /var/logs/php_error.log

注意:给的文件路径必须允许 Apache 用户和组具有写的权限。

9、部分资源限制参数优化。

9.1、设置每个脚本运行的最长时间

当无法上传较大的文件或者后台备份数据经常超时,每个脚本最大允许执行时间(秒),0 表示没有限制。此时需要调整如下设置:

max_execution_time = 30

这个参数有助于阻止劣质脚本无休止的占用服务器资源。该指令仅影响脚本本身的运行时间,任何其他花费在脚本运行之外的时间都不包括。如用 system()/sleep()函数的使用,数据库查询,文件上传等,都不包括在内。在安全模式下,你不能用 ini_set()在运行时改变这个设置。

9.2、每个脚本使用的最大内存

memory_limit = 128m

一个脚本所能够申请到的最大内存字节数(可以使用 K 和 M 作为单位)。这有助于防止劣质脚本消耗完服务器上的所有内存。要能够使用该指令,必须在编译的时候使用”–enable-memory-limit”配置选项,如果要取消内存限制,则必须将其设置为 -1,设置了该指令后,memory_get_usage()函数将变为可用。

9.3、每个脚本等待输入数据最长时间

默认设置如下:

max_input_time = -1

每个脚本解析输入数据 (POST,GET,upload) 的最大允许时间(秒),- 1 表示不限制。设置为:

max_input_time = 60;

9.4、上载文件的最大许可大小

当上传较大文件时,需要调整如下参数:

upload_max_filesize = 2M;

10、部分安全参数优化

1、禁止打开远程地址,最近出的 php 的 include 的漏洞,就是在一个 php 程序中 include 了变量,那么入侵者就可以利用这个控制服务器在本地执行远程的一个 PHP 程序,例如 phpshell,所以我们要关闭这个。

allow_url_fopen = Off

2、设定:cgi.fix_pathinfo= 0 防止 Nginx 文件类型错误解析漏洞。

11、调整 php 的 sesson 信息存放类型和位置

11.1、默认参数优化

session.save_handler = files

存储和检索与会话关联的数据的处理器名字。默认为文件(“files”),如果想要使用自定义的处理器(如基于数据库的处理器),可用”user”,设为”memcache”则可以使用 memcache 作为会话处理器(需要指定”–enable-memcache-session”编译选项)。

session.save_path =“/tmp”

传递给存储处理器的参数。对于 files 处理器,此值是创建会话数据文件的路径。

11.2、优化实例

1、安装 memcached 服务端软件。

注意:memcached 用 libevent 来做事件驱动,所以要先安装 libevent。

2、安装 memcache 客户端件

3、真正配置的开始

修改 php.ini 配置文件,在全局设置。web 集群 session 共享存储设置:

默认 php.ini 中 session 的类型和配置路径如下:

session.save_handler = files

session.save_path =“/tmp”

修改成如下配置:

session.save_handler = memcache

session.save_path =“tcp://192.168.115.110:11211”

提示:

(a)192.168.115.110:11211 为 memcached 数据库缓存的 IP 及端口

(b)上述适合 LNMP 和 LAMP 环境。

(c)memcached 服务器也可以是多台通过 hash 调度。

11.3、用 memcached 来存储 session 特点

优点:

1、读写速度上会比普通 files 时快很多。

2、可以解决多个服务器共用 session 的难题。

缺点:

1、session 数据都保存在 memory 中,持久化方面有所欠缺,但对 session 数据来说不是问题

2、也可以用其他的持久化系统存储 session,例如 radis,ttserver。

3、高性能高并发场景,cookies 的效率比 session 要好很多,因此很多大网站都会用 cookies 解决会话共享问题。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3962字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7995725
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...