<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >常见缺陷</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="PHP 手册" HREF="index.html"><LINK REL="UP" TITLE="文件上传处理" HREF="features.file-upload.html"><LINK REL="PREVIOUS" TITLE="错误信息说明" HREF="features.file-upload.errors.html"><LINK REL="NEXT" TITLE="上传多个文件" HREF="features.file-upload.multiple.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="sect1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >PHP 手册</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="features.file-upload.errors.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >章 38. 文件上传处理</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="features.file-upload.multiple.html" ACCESSKEY="N" >下一页</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="features.file-upload.common-pitfalls" >常见缺陷</A ></H1 ><P > 对 <TT CLASS="literal" >MAX_FILE_SIZE</TT > 设置的值,不能大于 ini 设置中 <A HREF="ini.core.html#ini.upload-max-filesize" >upload_max_filesize</A > 选项设置的值。其默认值为 2M 字节。 </P ><P > 如果内存限制设置被激活,可能需要将 <A HREF="ini.core.html#ini.memory-limit" >memory_limit</A > 设置的更大些,请确认 <A HREF="ini.core.html#ini.memory-limit" >memory_limit</A > 的设置足够的大。 </P ><P > 如果 <A HREF="ref.info.html#ini.max-execution-time" >max_execution_time</A > 设置的值太小,脚本运行的时间可能会超过该设置。因此,也请保证 <TT CLASS="literal" >max_execution_time</TT > 足够的大。 </P ><DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >注意: </B > <A HREF="ref.info.html#ini.max-execution-time" >max_execution_time</A > 仅仅只影响脚本本身运行的时间。任何其它花费在脚本运行之外的时间,诸如用函数 <A HREF="function.system.html" ><B CLASS="function" >system()</B ></A > 对系统的调用、<A HREF="function.sleep.html" ><B CLASS="function" >sleep()</B ></A > 函数的使用、数据库查询、文件上传等,在计算脚本运行的最大时间时都不包括在内。 </P ></BLOCKQUOTE ></DIV ><DIV CLASS="warning" ><P ></P ><TABLE CLASS="warning" BORDER="1" WIDTH="100%" ><TR ><TD ALIGN="CENTER" ><B >警告</B ></TD ></TR ><TR ><TD ALIGN="LEFT" ><P > <A HREF="ref.info.html#ini.max-input-time" >max_input_time</A > 以秒为单位设定了脚本接收输入的最大时间,包括文件上传。对于较大或多个文件,或者用户的网速较慢时,可能会超过默认的 <TT CLASS="literal" >60 秒</TT >。 </P ></TD ></TR ></TABLE ></DIV ><P > 如果 <A HREF="ini.core.html#ini.post-max-size" >post_max_size</A > 设置的值太小,则较大的文件会无法被上传。因此,请保证 <TT CLASS="literal" >post_max_size</TT > 的值足够的大。 </P ><P > 不对正在操作的文件进行验证可能意味着用户能够访问其它目录下的敏感信息。 </P ><P > 请注意 <SPAN CLASS="productname" >CERN httpd</SPAN > 似乎会丢弃它从客户端获得的 content-type mime 头信息中第一个空格后所有的内容,基于这一点,<SPAN CLASS="productname" >CERN httpd</SPAN > 不支持文件上传特性。 </P ><P > 鉴于文件路径的表示方法有很多种,我们无法确保用使用各种外语的文件名(尤其是包含空格的)能够被正确的处理。 </P ><P > 开发人员不应将普通的输入字段和文件上传的字段混用同一个表单变量(例如都用 <TT CLASS="literal" >foo[]</TT >)。 </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="features.file-upload.errors.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >起始页</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="features.file-upload.multiple.html" ACCESSKEY="N" >下一页</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >错误信息说明</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="features.file-upload.html" ACCESSKEY="U" >上一级</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >上传多个文件</TD ></TR ></TABLE ></DIV ></BODY ></HTML >