2015-01-01 48 views
1

所以在上傳PHP文件我目前正在檢查對php.ini文件上傳大小錯誤時:是否有必要檢查文件大小對php.ini和手動?

switch ($_FILES['file']['error']) { 
    case UPLOAD_ERR_OK: 
     break; 
    case UPLOAD_ERR_NO_FILE: 
     throw new RuntimeException('No file sent.'); 
    case UPLOAD_ERR_INI_SIZE: 
    case UPLOAD_ERR_FORM_SIZE: 
     throw new RuntimeException('Exceeded filesize limit.'); 
    default: 
     throw new RuntimeException('Unknown errors.'); 
} 

,然後手動檢查他們:

$max_size = "10490000"; 
if ($_FILES['file']['size'] > $max_size) { 
    throw new RuntimeException('Exceeded filesize limit.'); 
} 

是必要的第二步?或者只是檢查錯誤就足夠了。

另外,如果有必要,我可以放心地做這樣的事情了第二次檢查:

$max_size = (int)(ini_get('upload_max_filesize')); 

回答

1

(1)第二個步驟是沒有必要的,但你必須在UPLOAD_ERR_INI_SIZE情況下,從UPLOAD_ERR_FORM_SIZE情況下分開因爲他們有不同的含義手冊上說 http://php.net/manual/en/features.file-upload.errors.php

(2)在php.ini文件中的條目upload_max_filesize的值是使用這個標誌:
XY:其中X是整數,並且ÿ是單位,ÿ可以是G(千兆字節),M(兆字節)...等,讀更多的澄清 http://php.net/manual/en/faq.using.php#faq.using.shorthandbytes手動,因此使用(int)(ini_get('upload_max_filesize'));將始終不安全,並且需要額外處理

相關問題