2013-04-07 58 views
2

爲了以PHP上傳大文件,我需要增加文件大小/超時值。我不是在談論改變php.ini,而是在運行時做這件事。在PHP腳本中設置超時和文件大小值的位置

對應的數值

ini_set('upload_max_filesize', '20M'); 
ini_set('post_max_size', '20M'); 
ini_set('max_input_time', 300); 
ini_set('max_execution_time', 300); 

void set_time_limit (int $seconds)

但我不知道,我需要設置這個,或者我是否能做到這一點呢?因爲發送上傳數據時,只有在收到數據後才執行腳本。所以超時開始,在我能增加之前,還是我錯了?

那麼,我需要應用設置?

+1

你回答了你自己的問題:-)它需要在php.ini中設置。 – Bart 2013-04-07 10:24:07

+0

嘗試在發送數據到腳本之前設置所有這些,如果可能的話。但更好的方法是將其設置在php.ini – 2013-04-07 10:35:59

+1

http://www.php.net/configuration.changes.modes – hakre 2013-04-26 14:31:55

回答

2

並非所有的php.ini指令都可以在運行時更改。即使他們這樣做,一些指令也沒有意義。請參閱php.ini directives的列表。 根據可更改列,任何具有PHP_INI_ALL的配置都可以在運行時更改(通過您的PHP腳本)。

如果您有權訪問php.ini文件,請繼續進行編輯 - 不要擔心運行時更改。 但是,在某些情況下,您需要在運行時增加特定的PHP配置。

set_time_limit將計數器重置爲0,因此您的腳本可以多次調用該函數。這可以用於設置max_execution_timeforeach循環中。

例如,如果您必須處理大文件或其他內容,則可能需要爲實例增加max_execution_time

從PHP手冊ini_set

設置給定的配置選項的值。配置 選項將在腳本執行過程中保留此新值,並且在腳本結尾處將還原 。

即使您的PHP腳本無法有效更改值,您的.htaccess文件也可以。 (對於PHP_INI_PERDIR指令)。

請參閱documentation

實施例:

<IfModule mod_php5.c> 
    php_value upload_max_filesize 2M 
    php_flag magic_quotes_sybase    off 
    php_flag register_globals     off 
</IfModule> 

同樣,如果可能的話,優先php.ini文件。

相關問題