从 PHP 4.2.0 开始,PHP 将随文件信息数组一起返回一个对应的错误代码。
该代码可以在文件上传时生成的文件数组中的 ['error'] 字段中被找到,也就是 $_FILES['userfile']['error']。
UPLOAD_ERR_INI_SIZE
值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
UPLOAD_ERR_FORM_SIZE
值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
注意事项
对 MAX_FILE_SIZE 设置的值,不能大于 ini 设置中 upload_max_filesize 选项设置的值。其默认值为 2M 字节。
如果内存限制设置被激活,您可能需要将 memory_limit 设置的更大些,请确认 memory_limit 的设置足够的大。
如果 max_execution_time 设置的值太小,脚本运行的时间可能会超过该设置。因此,也请保证 max_execution_time 足够的大。
注: max_execution_time 仅仅只影响脚本本身运行地时间。任何其它花费在脚本运行之外的时间,诸如用函数 system() 对系统的调用、sleep() 函数的使用、数据库查询、文件上传等,在计算脚本运行的最大时间时都不包括在内。
如果 post_max_size 设置的值太小,则较大的文件会无法被上传。因此,请保证 post_max_size 的值足够的大。
不使您操作的文件有效化,可能意味着用户能够访问其它目录下的敏感信息。
请注意 CERN httpd 似乎会丢弃它从客户端获得的 content-type mime 头信息中第一个空格后所有的内容,基于这一点,CERN httpd 不支持文件上传特性。
鉴于文件路径的表示方法有很多种,我们无法确保用使用各种外语的文件名(尤其是包含空格的)能够被正确的处理。
摘自php手册
其实这个东西很容易绕过的,先用JS确认一下比较保险
关于上传文件的限制
系统:
redhat 9+apache 2.0 Filter+php 4.2.2
不知道怎么回事,上传大于512k的文件的时候就会显示找不到服务器。而且是没有经过上传过程,直接就找不到服务器了。
apache日志,发现上传时,错误信息:
[Wed May 12 17:05:10 2004] [error] [client 10.133.9.4] Requested content-length of 2025891 is larger than the configured limit of 524288
应当是对上传文件的限制吧,可是在httpd.conf 里面找不到这个设置。
php.ini 里面到是有,可以都已经设置成 8M 了。
另外error_log 里面还有些错误信息不知道是什么原因造成的
[Wed May 12 17:04:58 2004] [notice] Digest: generating secret for digest authentication ...
[Wed May 12 17:04:58 2004] [notice] Digest: done
[Wed May 12 17:04:59 2004] [info] (32)Broken pipe: core_output_filter: writing data to the network
[Wed May 12 17:04:59 2004] [notice] Apache/2.0.40 (Red Hat linux) configured -- resuming normal operations
; Maximum allowed size for uploaded files.
upload_max_filesize = 2M
一般PHP上传的限制设置在php.ini里面了,注意更改后要重新启动才会生效!
Originally posted by cnteacher at 2004-5-12 05:43 PM:
524288
这个设置在另外一个文件里面! /etc/httpd/conf.d/ 下的php.conf
php.ini里超时时间30秒太短了,改长点,比如300秒。
就是这些了,在php中解决了上传文件大小限制。