LoginSignup
1
1

More than 3 years have passed since last update.

CKFinderでアップロードファイルサイズの設定を変更しようとしたらハマった話

Last updated at Posted at 2020-10-28

お客さん:CKFinderでちょっと大きめのファイルもアップロードできるようにしたい!!
僕:よっしゃconfig変えるだけでいけるな。余裕や!!
一時間後...
僕:あれconfig変えたのにアップロードできない。。オワタ。。

ということが発生したので忘れないようにメモメモ。実は単純な話でした。

まずDocumentを確認

https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html
スクリーンショット 2020-10-28 17.18.09.png
どうやらfileSizeに20Mとか2Gとか設定すればいいみたいだ(ここまでは余裕モードでした)

アップロードできない。なんか設定効いてないっぽい。。

色々設定を変えてみてもある一定までは効くけど、それ以上はアップロードできない状態になってました(ここら辺から暗雲が立ち込める)
しょうがないのでCKFinderのソースを確認してみることに。

ckfinder/core/connector/php/vendor/cksource/ckfinder/src/CKSource/CKFinder/Command/Init.php
$resourceTypeObject = array(
  'name'              => $resourceTypeName,
  'allowedExtensions' => implode(",", $resourceType->getAllowedExtensions()),
  'deniedExtensions'  => implode(",", $resourceType->getDeniedExtensions()),
  'hash'              => $resourceType->getHash(),
  'acl'               => $aclMask,
  'maxSize'           => $resourceType->getMaxSize() ? min($resourceType->getMaxSize(), $phpMaxSize) : $phpMaxSize
)

ソースを追っていてふと気づく。$resourceType->getMaxSize()$phpMaxSizeの最小値を設定してる?

ckfinder/core/connector/php/vendor/cksource/ckfinder/src/CKSource/CKFinder/Command/Init.php
$phpMaxSize = 0;

$maxUpload = Utils::returnBytes(ini_get('upload_max_filesize'));
if ($maxUpload) {
  $phpMaxSize = $maxUpload;
}

$maxPost = Utils::returnBytes(ini_get('post_max_size'));
if ($maxPost) {
  $phpMaxSize = $phpMaxSize ? min($phpMaxSize, $maxPost) : $maxPost;
}

//ini_get('memory_limit') only works if compiled with "--enable-memory-limit"
$memoryLimit = Utils::returnBytes(@ini_get('memory_limit'));
if ($memoryLimit && $memoryLimit != -1) {
  $phpMaxSize = $phpMaxSize ? min($phpMaxSize, $memoryLimit) : $memoryLimit;
}

さらに追っていくと。
あ、やはりupload_max_filesizeとかpost_max_sizeを超えないようにしている!!
まあ冷静に考えてみればそりゃそうですよね。。

解決

ということでCKFinderのconfigの設定と合わせて、phpのupload_max_filesizeも合わせて許容値までに上限をあげて解決しました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1