在 PHP 中设置附件大小限制,可以通过以下两种方式实现:
修改 php.ini 文件
在 php.ini 配置文件中,可以修改 post_max_size 和 upload_max_filesize 两个参数来分别限制 POST 数据和上传文件的大小。
这两个参数的区别:
- post_max_size:
- 这个参数定义了通过 POST 方法(例如表单提交)可以上传到服务器的数据的最大大小。
- 如果上传的文件大于这个值,服务器会返回一个错误。
- 这个限制包括了所有的 POST 数据,不仅仅是文件上传。例如,如果你在表单中填写了一些文本字段,这些数据也会被计入
post_max_size 的限制。
- upload_max_filesize:
- 这个参数定义了通过 HTTP POST 方法上传的单个文件的最大大小。
- 这是对文件上传的限制,不包括其他非文件数据。
- 如果上传的文件超过了此限制,服务器会返回一个错误。
总结:
post_max_size 是对整个 POST 数据(包括文件和其他表单字段)的限制。
upload_max_filesize 是对单个上传文件的限制。
为了确保文件上传的正常工作,通常建议:
post_max_size 应该大于或等于 upload_max_filesize 。
post_max_size 可以设置为更大的值以允许更多的其他 POST 数据。
例如:
post_max_size = 64M
upload_max_filesize = 32M
这里将 POST 数据限制为 64MB,上传文件限制为 32MB。
需要注意的是,修改 php.ini 文件需要重启 Web 服务器才能生效。
使用 ini_set 函数
在 PHP 脚本中,也可以使用 ini_set 函数动态地修改上传文件大小限制。例如:
ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '32M');
这里同样将 POST 数据限制为 64MB,上传文件限制为 32MB。
需要注意的是,在使用 ini_set 函数时,必须在 PHP 脚本执行的早期调用该函数,否则可能无法生效。这些设置只对当前脚本有效,并不会影响 PHP 的全局设置或其它脚本。另外,某些操作系统和 Web 服务器可能会对 ini_set 函数进行限制,需要进行相应的配置或授权。
|