2014-10-06 60 views
0

我想让用户上传一个HTML文件输入和PHP的2GB jar文件的最大值。该过程工作正常,并且它上传文件,但只有当它很小时。我已经设置php.ini中这样:如何上传大于2MB的PHP文件?

max_execution_time = 10000 
max_input_time = 10000 
post_max_size = 2048M 
upload_max_filesize = 2048M 

我这样做,它提出,在我所有的PHP页面后:

require_once("../include/config.php"); 

加载与它没有什么比一件纯白色的页面OR(有时)它给了我这个错误:

Fatal error: Cannot redeclare encodePassword() (previously declared in /home/duskfall/public_html/authentication/encode.php:2) in /home/duskfall/public_html/authentication/encode.php on line 80 

线路80上它说,这是是:

$coded = ""; 

为什么当我只在php.ini中放置4件东西时会这样做。当我创建php.ini文件时,它们也是唯一的4件事。它甚至在我将任何内容放在php.ini文件中时都可以实现。我是否需要在文件中添加其他内容?

我该如何解决这个问题。或者有没有更好的方式与php.ini做到这一点,并使其只有一个PHP页面?

编辑:另外我在linux服务器上使用主机godaddy.com,如果有帮助的话。

+0

这是远高于goddady的限制(取决于其托管你有型) – 2014-10-06 02:43:25

+0

的错误说,'$ encodePassword'正在重新宣布。你确定你正在查看正确的文件吗? – Hamish 2014-10-06 02:44:26

+0

@Hamish encodePassword是一个函数。我发布的那一行是它说错误在那个函数中的地方。直到我成功之前,没有一个php.ini。当我所有的事情都停止了。它要么给了我错误,有时它只是加载一个空白页面。我是否需要在php.ini中添加更多内容? – Forseth11 2014-10-06 03:00:37

回答

0
  1. 在使用post_max_size之前,您必须设置memory_limit。
  2. post_max_size取决于memory_limit,memory_limit必须高于post_max_size,不等于。
  3. 另外post_max_size必须高于upload_max_filesize。
    在php脚本中使用:

    echo ini_get(“memory_limit”)。“\ n”;
    ini_set(“memory_limit”,“30M”);
    echo ini_get(“memory_limit”)。“\ n”;

    echo ini_get(“post_max_size”)。“\ n”;
    ini_set(“post_max_size”,“20M”);
    echo ini_get(“post_max_size”)。“\ n”;

    echo ini_get(“upload_max_filesize”)。“\ n”;
    ini_set(“upload_max_filesize”,“19M”);
    echo ini_get(“upload_max_filesize”)。“\ n”;

另外:
我认为你有一个问题,你的函数encodePassword()。
尝试使用新的明确的测试文件,如:

的test.html

<form enctype="multipart/form-data" action="/path/to/your/phpscript" method="POST"> 
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> 
    Send this file: <input name="userfile" type="file" /> 
    <input type="submit" value="Send File" /> 
</form> 

test.php的

$uploaddir = '/path/to/your/dir'; 
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']); 

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
    echo "Success.\n"; 
} else { 
    echo "Error!\n"; 
} 

echo '<pre>'; 
    echo 'Debug file:'; 
    print_r($_FILES); 
echo "</pre>"; 
+0

当我这样做时,它只改变了memory_limit,但其他的仍然保持不变。我收到此消息: 内存限制:64M - 新内存限制:30M - 邮政最大:48M - 新邮政最大:48M - 上传最大:32M - 新上传最大:32M – Forseth11 2014-10-06 17:12:11

+0

这意味着,您的代码有问题。 – 2014-10-08 02:01:03