0

フレームワークとしてCakephpを使用しています。フォームからファイルをアップロードする際に問題が発生しました。このWebサイトのアップローダープラグインを使用しています。

私のphpiniファイルにはこのコードが含まれています。

upload_max_filesize = 10M
post_max_size = 8M

これはuploader.phpからのものです->プラグインファイルには

var $maxFileSize = '5M'; //default max file size

私のcontroller.phpファイルでは、このコードを使用して、実行時に最大ファイルサイズを1MBに設定しています。

function beforeFilter() {
    parent::beforeFilter();

        $this->Uploader->maxFileSize = '1M'; 
}

uploader.phpで、これを実行します...

if (empty($this->maxFileSize)) {
    $this->maxFileSize = ini_get('upload_max_filesize'); //landmark 1
}

$byte = preg_replace('/[^0-9]/i', '', $this->maxFileSize);
$last = $this->bytes($this->maxFileSize, 'byte');

if ($last == 'T' || $last == 'TB') {
    $multiplier = 1;
    $execTime = 20;
} else if ($last == 'G' || $last == 'GB') {
    $multiplier = 3;
    $execTime = 10;
} else if ($last == 'M' || $last == 'MB') {
    $multiplier = 5;
    $execTime = 5;
} else {
    $multiplier = 10;
    $execTime = 3;
}


ini_set('memore_limit', (($byte * $multiplier) * $multiplier) . $last);
ini_set('post_max_size', ($byte * $multiplier) . $last);  //error suspected here
ini_set('upload_tmp_dir', $this->tempDir);
ini_set('upload_max_filesize', $this->maxFileSize); //landmark 2

期待される結果:2MBのサイズのファイルをアップロードしようとすると、実行時にmaxFileSizeが1MBであるため、アップロードされないはずです。したがって、アップロードは失敗するはずです。

問題は:しかし、それはアップロードされています。

ランドマーク1は実行されません。(コメント内)...ランドマーク2が機能していないようです...upload_max_filesizeがmaxFileSizeから値を取得していません。

助けてください...ありがとう

4

2 に答える 2

2

upload_max_filesizeスクリプトが実行されるまでに、ファイルはすでにアップロードされ、サーバーによって受け入れられているため、スクリプト実行中の設定はあまり意味がありません。スクリプトのサイズに基づいてファイルを拒否する必要がある場合 (Apache や PHP が拒否するのとは対照的に)、アップロードされたファイルのサイズを評価し、大きすぎる場合は「手動で」無視する必要があります。

于 2010-06-15T05:40:43.863 に答える
1

無意味かどうかにかかわらずupload_max_filesize、ini_set で変更することさえできません。

upload_max_filesizePHP_INI_PERDIRつまり 、変更可能なフラグがありますEntry can be set in php.ini, .htaccess, httpd.conf or .user.ini (since PHP 5.3)

post_max_size追加のコメントとして、それは等しいかそれ以上でなければならないことを覚えておいてくださいupload_max_filesize

于 2013-07-09T11:38:22.670 に答える