引言:“文件太大”——熟悉的痛点?
\n\n您是否曾尝试向网站上传高分辨率照片、博客视频或包含文档的ZIP压缩包,却突然看到无情的错误提示:“已超过最大上传文件大小”?如果是这样——您并不孤单。在Stack Overflow上,“Change the maximum upload file size”这个问题已经积累了数万次浏览,这意味着成千上万的开发者(从新手到专家)都曾遇到过这道坎。
\n\n在教育门户网站PythonLib上,我们不仅教您复制代码,更教您理解内部工作原理。今天,我们将通过生动的示例,手把手地解析如何在PHP中更改上传限制。您将了解设置藏在何处、为什么它们有时不起作用,以及如何避开最常见的陷阱。开始吧!
\n\n为什么PHP不允许上传大文件?
\n\n默认情况下,PHP相当“谦虚”。它只允许上传大小仅为2兆字节的文件(在某些旧版本中甚至更小)。这是出于安全考虑:想象一下,攻击者向您的服务器上传一个千兆字节的文件,导致网站瘫痪。但对于合法任务(例如上传作品集或视频教程),这个限制显然远远不够。
\n\n这个限制从何而来?答案来自PHP配置中的三个主要指令:
\n\n- \n
upload_max_filesize— 单个上传文件的最大大小。 \n post_max_size— 通过POST方法发送的所有数据(包括文件和表单文本字段)的最大大小。 \n max_execution_time— PHP执行脚本所花费的时间(上传大文件可能需要几分钟)。 \n
如果您只增加upload_max_filesize,却忘记了post_max_size,上传仍然会因错误而失败。这就像试图把一头大象塞进后备箱,而后备箱比大象本身还小。或者,您有一个大盒子(文件),但邮箱口(post_max_size)太窄了。
PHP设置在哪里?通往成功的三种途径
\n\n您有三种方法可以更改最大上传文件大小。选择哪一种取决于您的主机类型和访问权限。让我们逐一分析。
\n\n方法1. 编辑php.ini(黄金标准)
\n\nphp.ini文件是PHP的“主控制面板”。如果您有服务器访问权限(VPS、专用服务器或本地计算机),这是最可靠的方法。
找到您的php.ini文件。它通常位于:
- \n
- Linux:
/etc/php/8.x/apache2/php.ini或/etc/php/8.x/cli/php.ini\n - Windows:
C:\\xampp\\php\\php.ini(针对XAMPP)或C:\\wamp64\\bin\\php\\php8.x\\php.ini\n
打开文件并找到(或添加)以下行:
\n\n; 单个文件的最大大小(现在为50 MB)\nupload_max_filesize = 50M\n\n; 所有POST数据的最大大小(必须大于或等于upload_max_filesize)\npost_max_size = 64M\n\n; 脚本的最大执行时间(秒)(对于大文件,增加到300)\nmax_execution_time = 300\n\n; 接收数据的最大时间(建议至少设置为5分钟)\nmax_input_time = 300\n\n; 单个脚本的内存限制(如果文件很大,增加到128M或256M)\nmemory_limit = 128M\n\n更改后,务必重新启动Web服务器:
\nsudo systemctl restart apache2 # 针对Apache\nsudo systemctl restart nginx # 针对Nginx\n\n完成!现在您的网站可以接收最大50 MB的文件。但请记住:post_max_size应始终比upload_max_filesize大几兆字节,以便为表单的标头字段留出空间。