当前很多的网站或者博客程序都是基于PHP的环境开发设计的,例如大家都熟悉的WordPress和国内著名的织梦CMS,帝国CMS,著名的博客ZBlog等等吧,其实很多的网站或者博客程序都是基于PHP环境程序开发。既然都是PHP环境程序开发,在上传文件的时候,或多或少的存在一些共性的问题,例如同时上传的文件数量,特别是图片数量,上传的文件MB的大小,这些都可以在网站PHP环境配置文件即php.ini中得到设置,进而解决文件上传的一些问题。我们先来看最新版的PHP程序中php.ini的关于上传文件的简单说明:
;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
; https://php.net/file-uploads
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; https://php.net/upload-tmp-dir
;upload_tmp_dir =
; Maximum allowed size for uploaded files.
; https://php.net/upload-max-filesize
upload_max_filesize = 2M
; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20
这段代码位于php.ini-development文件,也就是被我们修改成为php.ini文件的第838行,里面有两个地方我们可以适当的进行设置修改,第一个地方就是:
upload_max_filesize = 2M
这句代码掌控的是PHP网站程序单次允许上传附件或者文件或者压缩包的大小,也就是默认的情况下最大允许上传2M大小的文件;大家当然对这个文件设置有点儿不满意,那您尽可能的把数值该大一些就可以。第二处需要修改的地方就是这句代码的下方:
max_file_uploads = 20
联网了一下,发现、估计、差不多、可能吧,就是掌控单次上传的文件数量,也就是一次上传附件或者文件或者压缩包的数量是20个,这也是为什么有些网站程序在上传附件的时候,选中的文件很多但是真正上传的数量没有多少,大家也可以适当的进行修改。还有一次地方需要修改:
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; https://php.net/post-max-size
post_max_size = 8M
这句代码在php.ini文件的第701行附近,隶属于
;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;
里面,翻译过来就是数据处理,有些网站翻译成“尽量避免网站处理数据漏洞”,这里面的
post_max_size = 8M
这行代码的含义其实就是通过表单POST给PHP的所能接收的最大值,包括表单里的所有值,看到这里估计有些站长朋友已经理解了,这个数值的设定,需要比
upload_max_filesize = 2M
的数值要大,你看默认值就是如此。当然了,这三处的默认数值在理论上我们可以随意的修改,但是实际情况是,需要考虑服务器的内存问题,上传附件或者文件或者图片的时间问题,就需要设置其他的地方例如php.ini的第399行,大家可以查看一下:
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
; Maximum execution time of each script, in seconds
; https://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 30
; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Note: This directive is hardcoded to -1 for the CLI SAPI
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; https://php.net/max-input-time
max_input_time = 60
; Maximum input variable nesting level
; https://php.net/max-input-nesting-level
;max_input_nesting_level = 64
; How many GET/POST/COOKIE input variables may be accepted
;max_input_vars = 1000
; How many multipart body parts (combined input variable and file uploads) may
; be accepted.
; Default Value: -1 (Sum of max_input_vars and max_file_uploads)
;max_multipart_body_parts = 1500
; Maximum amount of memory a script may consume
; https://php.net/memory-limit
memory_limit = 128M
整理出来就是:
max_execution_time = 30 ;每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time = 60 ;每个PHP页面接收数据所需的最大时间,默认60秒
;max_input_nesting_level = 64 ;每个PHP页面从接收请求开始处理数据后的超时时间
;max_input_vars = 1000 ; 一个表单(包括get、post、cookie的所有数据)最多提交1000个字段
;max_multipart_body_parts = 1500 ;可以有多少个多部分正文部分(组合输入变量和文件上传)
memory_limit = 128M ;每个PHP页面所吃掉的最大内存,默认128M
基本上就是告诉大家,修改参数很容易,但是高配置的服务器不好找,所以修改参数的时候还是尽量的符合网站所需,贴合实际的设置才是最好的优化设置。感谢大家来到我的博客,有事儿没事儿常来转转。