您的位置:首页 > 编程语言 > PHP开发

php.ini 上传文件配置及安全配置

2011-02-25 07:24 639 查看
from:
http://www.bluehost-cn.com/bluehost-php-ini-security-and-optimization http://hi.baidu.com/hechenn/blog/item/6a99cd1ee614b204304e151e.html
上传文件配置:

php上传文件涉及到的参数:
几个参数调整:

0:文件上传时存放文件的临时目录。必须是 PHP 进程所有者用户可写的目录。如果未指定则 PHP
使用系统默认值。php.ini文件中upload_tmp_dir用来说明PHP上传的文件放置的临时目录。
要想上传文件,得保证服务器没有关闭临时文件和有对文件夹的写权限
1:file_uploads
是否允许通过HTTP上传文件的开关,默认为ON即是开

2:upload_tmp_dir
upload_tmp_dir用来说明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件和有对文件夹的写权限,如果未指定则
PHP使用系统默认值

3:upload_max_filesize
允许上传文件大小的最大值,默认为2M

4:post_max_size
控制在采用POST方法进行一次表单提交中PHP所能够接收的最大数据量。如果希望使用PHP文件上传功能,则需要将此值改为比
upload_max_filesize要大

5:memory_limit
为了避免正在运行的脚本大量使用系统可用内存,PHP允许定义内存使用限额。通过memory_limit变量来指定单个脚本程序可以使用的最大内存容量
变量memory_limit的值应当适当大于post_max_size的值

6:max_execution_time
max_execution_time设置了在强制终止脚本前PHP等待脚本执行完毕的时间,此时间以秒计算。当脚本进入了一个无限循环状态时此变量非常
有用。然而,当存在一个需要很长时间完成的合法活动时(例如上传大型文件),这项功能也会导致操作失败。在这样的情况下必须考虑将此变量值增加,以避免
PHP在脚本正在执行某些重要过程的时候将脚本关闭
如何实现php大文件上传:
一个简单的配置例子,大家可以参考下:
1:打开php.ini,首先找到
file_uploads = on ;是否允许通过HTTP上传文件的开关。默认为ON即是开
upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_max_filesize = 8m ;望文生意,即允许上传文件大小的最大值。默认为2M
post_max_size = 8m ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
一般地,设置好上述四个参数后,上传<=8M的文件是不成问题,在网络正常的情况下。
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得关心关心下面的参数
max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit = 8m ;每个PHP页面所吃掉的最大内存,默认8M
把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了

php.ini优化---------安全篇

代码:

查找:disable_functions

找到后在=后面添加

(这里都是禁止在php里面执行的函数)代码:

exec,system,passthru,error_log,ini_alter,dl,openlog,syslog,readlink,symlink,link,leak,fsockopen,

proc_open,popepassthru,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,

shell_exec,proc_get_status,popen

上面内容请放到一行。因为保持帖子的整体效果作了换行

查找:display_errors

如果是On的话改成Off

查找:magic_quotes_gpc

如果是Off的话改成On

查找:register_globals

如果是On的话改成Off

查找:open_basedir

后面增加

/www/:/tmp/

这里是限制php可以访问的目录,后面一定要加上/,否则如果有/wwwabcd这个目录也会被访问得到

多个目录用英文:分隔。如果不添加/tmp/的话Discuz!的上传功能就无法使用

注意:以上内容在php.ini的开头会有相关设置的提示,请按ctrl+x查找下一个,不要直接在上面修改

------------------------------

对php.ini优化

GD库的支持

;extension=php_gd2.dll

将前面的冒号去掉,

output_buffering = Off

输出缓存允许你甚至在输出正文内容之后发送 header(标头,包括cookies)行 其代价是输出层减慢一点点速度。你可以使用输出缓存在运行时打开输出缓存, 或者在这里将指示设为 On 而使得所有文件的输出缓存打开。

output_handler = ; 你可以重定向你的脚本的所有输出到一个函数,

那样做可能对处理或以日志记录它有用。

例如若你将这个output_handler 设为ob_gzhandler, 则输出会被透明地为支持gzip或deflate编码的浏览器压缩。

设一个输出处理器自动地打开输出缓冲。

找到这个

output_buffering = Off

修改为

On

注意,不要设置数值,只需要设置为On即可。

相应的,你还可以在你的discuz后台,打开gzip支持,也是优化的一项内容。

有些朋友为了安全,还启用了php的安全模式,这个也是一办法

另外有些朋友需要使用全局变量和MAGIC,这是一些php程序的必备条件,discuz2.0也需要

可以打开,不过安全性能将降低,方法很简单。

register_globals = Off ;

将其修改为On即可.

一些朋友经常反映无法上传较大的文件或者后台备份数据经常超时

max_execution_time = 30 ; 这个是每个脚本运行的最长时间,可以自己修改加长,单位秒

max_input_time = 60 ; 这是每个脚本可以消耗的时间,单位也是秒

memory_limit = 8M ; 这个是脚本运行最大消耗的内存,也可以自己加大

upload_max_filesize = 2M ; 上载文件的最大许可大小 ,自己改吧,一些图片论坛需要这个更大的值。

如果:

php报错显示PHP has encountered an Access Violation at ***解决办法

很多人说,是php版本的问题,其实不然,可以从四个地方来看这个问题

1,是否zend所需的dll文件所在目录给的权限不够,必须有读取和运行的权限

2,是否使用的2003,设置过应用池,比如池中限制了什么什么,调整一下再试试看,是否好了,呵呵

3,php.ini有两个地方没有设置,而且一些程序必须用到的

将;upload_tmp_dir该行的注释符,使该行在php.ini文档中起作用。

upload_tmp_dir是用来定义上传文件存放的临时路径,在这里你还可以给其定义一个绝对路径,

例如:upload_tmp_dir = d:upload  当然,此时你的d:upload目录必须有读写权限。

这里我设置为

upload_tmp_dir = c:temp

出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,

解决的方法是将session.save_path和session.cookie_path 设置置为

session.save_path = c:temp

session.cookie_path = c:temp(我没有修改这项,我发现修改后的验证玛不能用)

然后在c:目录下建立一个temp目录

注意:任何修改先做文件备份!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: