mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-11-04 14:46:19 +08:00 
			
		
		
		
	FileValidator->getSizeLimit: check also php's post_max_size
- return the lowerest of `post_max_size` or `upload_max_filesize` - Raised warning for misconfigured PHP close #8373
This commit is contained in:
		
				
					committed by
					
						
						Carsten Brandt
					
				
			
			
				
	
			
			
			
						parent
						
							0575a710c0
						
					
				
				
					commit
					a6fc02345e
				
			@ -46,6 +46,7 @@ Yii Framework 2 Change Log
 | 
			
		||||
- Enh #7259: Added `errorAttributes` parameter to ActiveForm `afterValidate` event. Made scrolling to first error optional (nkovacs)
 | 
			
		||||
- Enh #8070: `yii\console\controllers\MessageController` now sorts created messages, even if there is no new one, while saving to PHP file (klimov-paul)
 | 
			
		||||
- Enh #8286: `yii\console\controllers\MessageController` improved allowing extraction of nested translator calls (klimov-paul)
 | 
			
		||||
- Ehn #8373: Check also `post_max_size` parameter in `yii\validators\FileValidator::getSizeLimit()` (maxxer)
 | 
			
		||||
- Enh #8415: `yii\helpers\Html` allows correct rendering of conditional comments containing `!IE` (salaros, klimov-paul)
 | 
			
		||||
- Enh #8444: Added `yii\widgets\LinkPager::$linkOptions` to allow configuring HTML attributes of the `a` tags (zinzinday)
 | 
			
		||||
- Enh #8486: Added support to automatically set the `maxlength` attribute for `Html::activeTextArea()` and `Html::activePassword()` (klimov-paul)
 | 
			
		||||
 | 
			
		||||
@ -248,9 +248,10 @@ class FileValidator extends Validator
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the maximum size allowed for uploaded files.
 | 
			
		||||
     * This is determined based on three factors:
 | 
			
		||||
     * This is determined based on four factors:
 | 
			
		||||
     *
 | 
			
		||||
     * - 'upload_max_filesize' in php.ini
 | 
			
		||||
     * - 'post_max_size' in php.ini
 | 
			
		||||
     * - 'MAX_FILE_SIZE' hidden field
 | 
			
		||||
     * - [[maxSize]]
 | 
			
		||||
     *
 | 
			
		||||
@ -258,7 +259,13 @@ class FileValidator extends Validator
 | 
			
		||||
     */
 | 
			
		||||
    public function getSizeLimit()
 | 
			
		||||
    {
 | 
			
		||||
        // Get the lowest between post_max_size and upload_max_filesize, log a warning if the first is < than the latter
 | 
			
		||||
        $limit = $this->sizeToBytes(ini_get('upload_max_filesize'));
 | 
			
		||||
        $postLimit = $this->sizeToBytes(ini_get('post_max_size'));
 | 
			
		||||
        if ($postLimit > 0 && $postLimit < $limit) {
 | 
			
		||||
            Yii::warning('PHP.ini\'s \'post_max_size\' is less than \'upload_max_filesize\'.', __METHOD__);
 | 
			
		||||
            $limit = $postLimit;
 | 
			
		||||
        }
 | 
			
		||||
        if ($this->maxSize !== null && $limit > 0 && $this->maxSize < $limit) {
 | 
			
		||||
            $limit = $this->maxSize;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -70,7 +70,7 @@ class FileValidatorTest extends TestCase
 | 
			
		||||
 | 
			
		||||
    public function testGetSizeLimit()
 | 
			
		||||
    {
 | 
			
		||||
        $size = $this->sizeToBytes(ini_get('upload_max_filesize'));
 | 
			
		||||
        $size = min($this->sizeToBytes(ini_get('upload_max_filesize')),$this->sizeToBytes(ini_get('post_max_size')));
 | 
			
		||||
        $val = new FileValidator();
 | 
			
		||||
        $this->assertEquals($size, $val->getSizeLimit());
 | 
			
		||||
        $val->maxSize = $size + 1; // set and test if value is overridden
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user