如何计算准确的 PHP 上传限制

如何计算准确的 PHP 上传限制

php 中上传的最大大小取决于设置的数量。它们如下,放入 apache 虚拟主机文件中:

php_admin_flag file_uploads on

php_admin_value memory_limit 560M
php_admin_value post_max_size 530M
php_admin_value upload_max_filesize 500M

php_admin_value max_execution_time 0
php_admin_value max_input_time 0

请忽略上面的值,但它们使我能够允许大约 150-200M 的上传。memory_limit、post_max_size 和 upload_max_filesize 之间有一些特定的比率。我相信

upload_max_filesize < post_max_size < memory_limit

但是,我不知道如何计算确切的大小。例如,为了允许准确上传 100M 的文件,这些设置的值必须是多少?从我在线收集的信息来看,有许多因素决定了这些比率,但我找不到任何参考资料来说明这些因素是什么。

我正在使用linux系统。

答案1

内存限制与上传文件的 POST 大小无关。上传的文件将直接由 PHP 解析并放入临时文件夹中。

必须upload_max_filesize是 100M,您的post_max_size必须是 100M + 多部分编码的开销。由于它是带边界的二进制编码,因此开销很低。即使有 101MB 也可以工作。

现在,如果您这样做,它仍然可能会使您的脚本崩溃,$file = file_get_contents('path/to/uploaded/file.ext');因为在这种情况下memory_limit将会启动。

相关内容