如何避免post_max_size

时间:2014-08-22 05:25:27

标签: php wordpress file-upload upload image-uploading

我有问题。我正在创建自己的PHP应用程序,我想允许用户上传文件。

我的PHP

function make_upload() {
 echo "<pre>";
 print_r($_FILES);
 echo "</pre>";
}

if (isset($_GET["upload"]) && $_GET["upload"] == "1") {
 make_upload();
}

我的HTML

<form action="?upload=1" method="post" enctype="multipart/form-data">
 <input name="file[]" type="file" multiple/>
 <input type="submit" value="Upload"/>
</form>

当我尝试浏览并选择多个文件时,print_r($_FILES);显示空白Array ( )而不是包含我的文件的数组。之所以发生这种情况,是因为post_max_size设置为8M。如果我更改了post_max_size,那么我可以选择更多图片。

我想分享我的应用程序以安装在网站上,但我不想告诉用户增加他们的post_max_size

是否有任何选项可以避免post_max_size? (我看到在wordpress中我可以选择超过post_max_size的图像 - 如何制作?)

3 个答案:

答案 0 :(得分:2)

你可以通过.htaccess文件来完成。

php_value upload_max_filesize 200M

但有时主机提供商不允许您覆盖它。在这种情况下,您将获得500内部服务器错误

答案 1 :(得分:1)

您需要在php.ini中设置upload_max_filesize和post_max_size的值:

上传文件的最大允许大小。

upload_max_filesize = 40M;

必须大于或等于upload_max_filesize

post_max_size = 40M;

修改php.ini文件后,需要重启HTTP服务器以使用新配置。

如果你不能改变你的php.ini,那你就不走运了。您无法在运行时更改这些值;上传文件大于php.ini中指定的值将在执行到达ini_set时失败。

请参阅Description of core php.ini指令。

答案 2 :(得分:1)

当你调用

时,你没有传递数组来传递它
if (isset($_GET["upload"]) && $_GET["upload"] == "1") {
 make_upload($_FILES); // pass this $_FILES array to function
}

AND功能就像这样

function make_upload($_FILES) {
 echo "<pre>";
 print_r($_FILES); // will print array
 echo "</pre>";
}