2013-04-07 45 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文件。