2014-10-06 55 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