Kích thước tải lên tệp được cho phép bởi cài đặt php được xác định bằng tập lệnh php như thế nào?Cách xác định giới hạn tải lên tệp tối đa trong php
Trả lời
Việc tải bị hạn chế bởi ba lựa chọn: upload_max_filesize, post_max_size và memory_limit. Tải lên của bạn chỉ được thực hiện nếu nó không xuất hiện một trong số chúng.
Chức năng ini_get() cung cấp cho bạn một giới hạn ngắn về giới hạn và phải được chuyển đổi trước tiên. Thx đến AoEmaster cho việc này.
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);
}
Nguồn: http://www.kavoir.com/2010/02/php-get-the-file-uploading-limit-max-file-size-allowed-to-upload.html
Sử dụng ini_get
để có được những giá trị cấu hình hiện tại:
ini_get('upload_max_filesize')
Bạn cũng có thể thay đổi kích thước mà khi chạy bằng cách sử dụng tập tin .htaccess mà không cần phải thay đổi tập tin php.ini của bạn
php_value upload_max_filesize 1224M
php_value post_max_size 1224M
php_value max_execution_time 3000
php_value max_input_time 3000
sao chép mã và đặt bạn tệp, sau đó lưu trữ tệp đó bằng tệp chỉ mục, sau đó bạn chạy dự án của mình, bạn cũng có thể tải lên tệp 1GB
để biết thêm chi tiết read this article
Đây không phải là câu trả lời cho câu hỏi ... –
Bạn có thể thiết lập kích thước tập tin tải lên tối đa sử dụng ini_set()
ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');
hoặc sử dụng file .htaccess
php_value upload_max_filesize
php_value post_max_size
Một số cài đặt này có thể được thay đổi bên trong tập lệnh .php bằng cách sử dụng ini_set và một số không thể. Xem http://php.net/manual/en/ini.list.php để xem danh sách đầy đủ. Ví dụ: post_max_size nói: "PHP_INI_PERDIR \t PHP_INI_SYSTEM bằng PHP <= 4.2.3. Có sẵn từ PHP 4.0.3." Để giải mã ý nghĩa của "PHP_INI_PERDIR", hãy xem http://php.net/manual/en/configuration.changes.modes.php PHP_INI_PERDIR \t Mục nhập có thể được đặt trong php.ini, .htaccess, httpd. conf hoặc .user.ini (kể từ PHP 5.3) Vì vậy, post_max_size không thể được đặt trong tập lệnh PHP thông qua ini_set(). –
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);
}
Một chút giải thích ngoài một khối mã sẽ hữu ích hơn rất nhiều. –
Xin lỗi tôi là người Pháp, tôi không thể giải thích nó bằng tiếng Anh tốt. Tôi chỉ muốn giúp đỡ và chia sẻ giải pháp của tôi. – AoEmaster
Thay thế rất giống nhau: http://stackoverflow.com/a/22500394/1227297 –
Dưới đây là một chức năng duy nhất, thực hiện ý tưởng ban đầu từ AoEmaster . Hàm trả về số nguyên (số byte).
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);
}
Nếu bạn muốn, bạn có thể kết hợp nó với chức năng sau đây hiển thị đầu ra dưới dạng văn bản có thể đọc được của con người.
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';
}
}
Sử dụng nó theo cách này:
echo 'Max allowed upload size: '._Byte2Size(_GetMaxAllowedUploadSize());
Một kết quả có thể là:
Max kích thước cho phép upload: 500 MB
- 1. Cách hạn chế giới hạn kích thước tải lên tệp dựa trên loại tệp .htaccess
- 2. Giới hạn tải lên tệp trong HTTP
- 3. Xác định giới hạn kích thước họa tiết tối đa/tối trong Android OpenGLES
- 4. PHP - Kích thước tải lên tổng cộng tối đa?
- 5. Có cách nào để bỏ qua giới hạn maxRequestLength của tải lên tệp 2GB không?
- 6. Tăng giới hạn kích thước tải lên tệp trong iis6
- 7. Tải lên kích thước tối đa bằng PHP?
- 8. Kích thước tệp tối đa cho phép bằng cách tải lên tệp ASP.NET Kiểm soát
- 9. Giới hạn bộ nhớ ứng dụng tối đa trong iPad?
- 10. Kích thước tối đa của tệp Struts2 tải lên
- 11. Giới hạn kích thước tải lên tệp Rails
- 12. Giới hạn kích thước tối đa của HashMap trong Java
- 13. Trong giới hạn tối đa mua ứng dụng
- 14. Hạn chế tối đa của ModSecurity (lỗi giới hạn PCRE)
- 15. Tải lên tệp (tối đa 10Mb kích thước tệp) với ASP.NET webAPI
- 16. Bạn làm cách nào để tải lên với giới hạn?
- 17. Giới hạn độ dài nội dung chuỗi tối đa (8192)
- 18. Làm cách nào để hạn chế kích thước tệp loại tệp tải lên bằng PHP?
- 19. Xác nhận kích thước tải lên tệp
- 20. tải lên tệp jquery hạn chế số lượng tệp
- 21. Làm cách nào để có các loại tệp giới hạn jQuery khi tải lên?
- 22. Tệp tải lên PHP
- 23. NPTL giới hạn chuỗi tối đa tại 65528?
- 24. Giới hạn kích thước đối tượng OpenGL FrameBuffer tối đa?
- 25. Chọn Giới hạn tối đa 1 từ nhóm
- 26. PHP, Zend Framework: Cách đặt kích thước tải lên tối đa?
- 27. mục đích của số tối đa trong php & mysql
- 28. PHP: json giới hạn decode
- 29. Xóa giới hạn tải lên 30MB trên IIS express
- 30. Giới hạn việc tải tệp lên một số tiện ích mở rộng tệp
Cần lưu ý rằng điều này không chiếm viết tắt ký hiệu trong các tệp ini, vì vậy nếu bạn có giới hạn là "64M", nó sẽ được phân tích cú pháp là 64. Tốt nhất để chuyển đổi tất cả thành byte trước khi so sánh. –
Tôi đồng ý với Brady, hầu hết các tệp ini mà tôi thấy bây giờ sử dụng ký hiệu viết tắt. –
Xem chuyển đổi này http://stackoverflow.com/questions/13076480/php-get-actual-maximum-upload-size – Shane