1. 程式人生 > >解決nginx和php使用ckfinder無法上傳大文件的問題

解決nginx和php使用ckfinder無法上傳大文件的問題

body lan 限制 ESS connector ocs show efault extension

現象描述:
cms內容發布系統上傳不了大文件,當上傳超過32M文件時就上傳不了

提示:無效的文件. 文件尺寸太大。

技術分享圖片

分析文件上傳過程:
browser --> nginx --> php

需要修改 nginx.conf和php.ini

1.nginx.conf新增如下參數,重啟無效:
client_max_body_size 512M;
client_body_buffer_size 128M;


2.修改php.ini配置,重啟php-fpm無效:
/usr/local/php-7.0.12_fpm/lib/php.ini

post_max_size = 512M
upload_max_filesize = 256M


3.找到上傳文件代碼所在的目錄 /data/www/cms/cmsx.chinasoft.com.wx/httpdocs/public

[root@newcms:/data/www/cms/cmsx.chinasoft.com.wx/httpdocs/public]# grep -ri "無效的文件. 文件尺寸太大"
resources/js/libs/ckfinder/core/connector/php/lang/zh-cn.php: ‘203‘ => ‘無效的文件. 文件尺寸太大。‘,
resources/js/libs/ckfinder/lang/zh-cn.js: 203 : ‘無效的文件. 文件尺寸太大。‘,

發現使用了 ckfinder 這個富文本插件


經過搜索發現限制在配置文件config.php,修改最大文件問題解決:

[root@newcms:/data/www/cms/cmsx.chinasoft.com.wx/httpdocs/public]# find ./ -name config.php
/data/www/cms/cmsx.chinasoft.com.wx/httpdocs/public/resources/js/libs/ckfinder/config.php

$config[‘DefaultResourceTypes‘] = ‘‘;

$dir_name_1 = preg_replace(‘/.+\/([^\/]*[a-z]+\.[a-z]+)\/.+/‘, ‘$1‘, $baseDir);

$config[‘ResourceType‘][] = Array(
‘name‘ => $dir_name_1, // Single quotes not allowed
‘url‘ => $baseUrl,
‘directory‘ => $baseDir,
‘maxSize‘ => "300M", # 修改此處
‘allowedExtensions‘ => isset( $_GET[‘show_format‘] ) ? $_GET[‘show_format‘] : ‘‘,
‘deniedExtensions‘ => ‘‘);

$config[‘AccessControl‘][] = Array(
‘role‘ => ‘*‘,
‘resourceType‘ => $dir_name_1,
‘folder‘ => ‘/‘,

‘folderView‘ => true,
‘folderCreate‘ => true,
‘folderRename‘ => false,
‘folderDelete‘ => true,

‘fileView‘ => true,
‘fileUpload‘ => true,
‘fileRename‘ => true,
‘fileDelete‘ => true);


$dir_name_2 = ‘All files list‘;
$config[‘ResourceType‘][] = Array(
‘name‘ => $dir_name_2,
‘url‘ => ‘‘,
‘directory‘ => ‘‘,
‘maxSize‘ => "300M", # 修改此處
‘allowedExtensions‘ => isset( $_GET[‘show_format‘] ) ? $_GET[‘show_format‘] : ‘‘,
‘deniedExtensions‘ => ‘‘);

解決nginx和php使用ckfinder無法上傳大文件的問題