如何通過php腳本確定php設置允許的文件上傳大小?如何確定在php中的最大文件上傳限制
回答
上傳由三個選項的限制:的upload_max_filesize,的post_max_size和memory_limit的。你的上傳只有在它沒有執行其中一項時纔會完成。
ini_get()函數爲您提供了一個極限,並且應該首先進行轉換。 Thx爲AoEmaster爲此。
function return_bytes($val) {
$val = trim($val);
$last = strtolower($val[strlen($val)-1]);
switch($last)
{
case 'g':
$val *= 1024;
case 'm':
$val *= 1024;
case 'k':
$val *= 1024;
}
return $val;
}
function max_file_upload_in_bytes() {
//select maximum upload size
$max_upload = return_bytes(ini_get('upload_max_filesize'));
//select post limit
$max_post = return_bytes(ini_get('post_max_size'));
//select memory limit
$memory_limit = return_bytes(ini_get('memory_limit'));
// return the smallest of them, this defines the real limit
return min($max_upload, $max_post, $memory_limit);
}
來源:http://www.kavoir.com/2010/02/php-get-the-file-uploading-limit-max-file-size-allowed-to-upload.html
使用ini_get
獲取當前的配置值:
ini_get('upload_max_filesize')
您可以在運行時使用.htaccess文件,而不需要改變你的php.ini文件還改變大小
php_value upload_max_filesize 1224M
php_value post_max_size 1224M
php_value max_execution_time 3000
php_value max_input_time 3000
複製代碼,並把你的文件,然後用索引文件存儲該文件,然後運行您的項目,您還可以上傳1GB文件
瞭解更多詳情read this article
這不是對問題的回答... – 2014-01-09 01:25:54
可以使用的ini_set設定最大上傳文件大小()
ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');
或 使用.htaccess文件
php_value upload_max_filesize
php_value post_max_size
其中一些設置可以在.php腳本中使用ini_set更改,有些則不可以。查看http://php.net/manual/en/ini.list.php獲取完整列表。例如post_max_size說: 「PHP_INI_PERDIR \t PHP中的PHP_INI_SYSTEM <= 4.2.3。自PHP 4.0.3起可用。」 爲了破譯 「PHP_INI_PERDIR」 的意思,見http://php.net/manual/en/configuration.changes.modes.php PHP_INI_PERDIR \t項可以在php.ini,htaccess的,httpd的設置。 conf或.user.ini(自PHP 5.3起) 所以post_max_size不能通過ini_set()在PHP腳本中設置。 – 2017-03-20 20:44:56
function return_bytes($val)
{
$val = trim($val);
$last = strtolower($val[strlen($val)-1]);
switch($last)
{
case 'g':
$val *= 1024;
case 'm':
$val *= 1024;
case 'k':
$val *= 1024;
}
return $val;
}
function get_upload_max_filesize()
{
$max_upload = return_bytes(ini_get('upload_max_filesize'));
$max_post = return_bytes(ini_get('post_max_size'));
return min($max_upload, $max_post, $memory_limit);
}
除了一段代碼之外,更多的解釋會更加有用。 – 2014-06-28 23:43:06
對不起,我是法國人,我無法用英語解釋。我只是想幫助和分享我的解決方案。 – AoEmaster 2014-06-28 23:55:48
非常類似的替代方法:http://stackoverflow.com/a/22500394/1227297 – 2014-08-11 10:03:36
這裏有一個單一的功能,實現從AoEmaster最初的想法。 該函數返回整數(字節數)。
function _GetMaxAllowedUploadSize(){
$Sizes = array();
$Sizes[] = ini_get('upload_max_filesize');
$Sizes[] = ini_get('post_max_size');
$Sizes[] = ini_get('memory_limit');
for($x=0;$x<count($Sizes);$x++){
$Last = strtolower($Sizes[$x][strlen($Sizes[$x])-1]);
if($Last == 'k'){
$Sizes[$x] *= 1024;
} elseif($Last == 'm'){
$Sizes[$x] *= 1024;
$Sizes[$x] *= 1024;
} elseif($Last == 'g'){
$Sizes[$x] *= 1024;
$Sizes[$x] *= 1024;
$Sizes[$x] *= 1024;
} elseif($Last == 't'){
$Sizes[$x] *= 1024;
$Sizes[$x] *= 1024;
$Sizes[$x] *= 1024;
$Sizes[$x] *= 1024;
}
}
return min($Sizes);
}
如果需要,可以將它與以下將輸出呈現爲人類可讀文本的函數結合使用。
function _Byte2Size($bytes,$RoundLength=1) {
$kb = 1024; // Kilobyte
$mb = 1024 * $kb; // Megabyte
$gb = 1024 * $mb; // Gigabyte
$tb = 1024 * $gb; // Terabyte
if($bytes < $kb) {
if(!$bytes){
$bytes = '0';
}
return (($bytes + 1)-1).' B';
} else if($bytes < $mb) {
return round($bytes/$kb,$RoundLength).' KB';
} else if($bytes < $gb) {
return round($bytes/$mb,$RoundLength).' MB';
} else if($bytes < $tb) {
return round($bytes/$gb,$RoundLength).' GB';
} else {
return round($bytes/$tb,$RoundLength).' TB';
}
}
使用這種方式:
echo 'Max allowed upload size: '._Byte2Size(_GetMaxAllowedUploadSize());
一個結果可能是:
最大允許上傳的尺寸:500 MB
- 1. 最大的文件上傳限制PHP
- 2. 限制上傳文件大小在PHP
- 3. 最大文件上傳限制
- 4. 如何限制PHP中的文件上傳大小?
- 5. PHP文件上傳大小限制
- 6. 如何在struts 2中指定上傳文件大小限制?
- 7. 如何限制上傳文件大小?
- 8. 如何動態更改php中的最大上傳文件限制?
- 9. 如何在PHP中從後端jQuery文件上傳限制最大1個文件上傳
- 10. 如何強制PHP設置文件上傳的正確權限?
- 11. PHP文件上傳,如何限制文件上傳類型
- 12. 如何增加WHM最大文件上傳限制
- 13. 如何在php中允許有限大小的文件上傳?
- 14. Internet Explorer中最大文件大小上傳限制是多少?
- 15. 如何在java servlet中限制上傳的文件大小
- 16. Angular 2文件上傳指令,最大併發上傳限制
- 17. apache和gunicorn的最大(限制)上傳文件大小
- 18. 如何限制AngularJS中的附件大小(文件上傳)?
- 19. 限制上傳文件大小上傳前用php://輸入
- 20. 如何增加在PHP中的最大文件上傳?
- 21. 如何確定HTML/PHP上傳前的文件大小?
- 22. 如何在Wicket中限制上傳文件大小
- 23. 在php中增加.sql文件的最大大小限制myadmin
- 24. 正確的PHP文件上傳權限
- 25. 限制Struts2文件上傳的最大尺寸沒有上傳整個文件
- 26. 如何限制用戶在php中上傳文件?
- 27. 如何在php或apache中限制文件上傳速度?
- 28. PHP最大上傳文件大小
- 29. 如何更改最大文件大小限制PHP
- 30. 如何限制wsgi中的大文件上傳?
需要指出的是,這並不佔速記ini文件中的符號,所以如果你有一個「64M」的限制,它將被解析爲64.最好在比較之前將所有字節轉換爲字節。 – 2014-01-09 01:24:32
我同意Brady,我看到的大多數ini文件現在都使用簡寫符號。 – 2014-02-24 17:03:21
請參閱此轉換http://stackoverflow.com/questions/13076480/php-get-actual-maximum-upload-size – Shane 2014-08-12 10:37:14