FCKeditor(現 CKEditor 前身)是早期廣泛使用的線上富文本編輯器。本文記錄針對 PHP 環境的客製化調整步驟,包含精簡檔案、語言包優化、上傳功能啟用、檔名亂碼修正與介面漢化,供維護舊專案參考。
editor/_source/:原始碼目錄,生產環境不需保留。editor/lang/en.js、zh.js、zh-cn.js,其餘刪除以減小體積。editor/filemanager/connectors/ 下僅保留 php/ 目錄,刪除 asp、aspx、cfm、jsp、lasso、perl、py 等其他語言連接器。FCKConfig.DefaultLanguage = 'zh-cn'; // 或 'zh' 視語言檔名稱而定
FCKConfig.FontNames = '新細明體;標楷體;微軟正黑體;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana';
註:字型名稱需用分號分隔,瀏覽器端需有對應字型才會顯示效果。
FCKConfig.FontSizes = '9px;10px;11px;12px;13px;14px;16px;18px;24px;36px';
原預設為 xx-small, x-small, small, medium, large, x-large, xx-large 等關鍵字,改為像素值方便使用者精確控制。
編輯 editor/filemanager/connectors/php/config.php:
$Config['Enabled'] = true; // 預設為 false,必須改為 true
同檔案中建議同步設定:
$Config['UserFilesPath'] = '/userfiles/'; // 網站可訪問的上傳路徑
$Config['UserFilesAbsolutePath'] = '/var/www/html/userfiles/'; // 伺服器實體絕對路徑
$Config['ForceSingleExtension'] = true; // 安全:強制單一副檔名
修改 editor/filemanager/connectors/php/io.php 中的 SanitizeFileName 函式,將上傳檔名重命名為「時間戳+隨機字串」格式:
function SanitizeFileName($sNewFileName) {
global $Config;
$sNewFileName = stripslashes($sNewFileName);
// 安全性:替換多餘的點號
if ($Config['ForceSingleExtension']) {
$sNewFileName = preg_replace('/\.(?![^.]*$)/', '_', $sNewFileName);
}
// 移除危險字元
$sNewFileName = preg_replace('/[\\\\|\/|:|\?|\*|"|<|>]/', '_', $sNewFileName);
// === 新增:重命名邏輯 ===
$ext = pathinfo($sNewFileName, PATHINFO_EXTENSION);
$sNewFileName = generateUniqueFileName() . '.' . $ext;
return $sNewFileName;
}
function generateUniqueFileName() {
$time = explode(' ', microtime());
$chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
$rand = '';
for ($i = 0; $i < 6; $i++) {
$rand .= $chars[mt_rand(0, strlen($chars) - 1)];
}
return date('ymdHis') . substr($time[0], 2, 6) . $rand;
}
此修改可避免中文檔名編碼問題、防止同名檔案覆蓋、提升安全性。
若需將上傳對話框的英文提示改為中文,需修改以下 JavaScript 檔案中的字串:
editor/filemanager/connectors/php/commands.phpeditor/filemanager/connectors/php/connector.phpeditor/filemanager/connectors/php/upload.phpeditor/dialog/fck_flash/fck_flash.jseditor/dialog/fck_image/fck_image.jseditor/dialog/fck_link/fck_link.js建議使用編輯器全域搜尋關鍵字(如 alert(, confirm()逐一替換。
| 項目 | 建議 |
|---|---|
| 快取 | 修改 JS 檔後需清除瀏覽器快取或加版本號 ?v=20240101 |
| 權限 | 上傳目錄需給 PHP 寫入權限(Linux: chown www-data:www-data) |
| 安全 | 配合 .htaccess 禁止上傳目錄執行 PHP:php_flag engine off |
| 升級 | 新專案建議直接採用 CKEditor 4/5,FCKeditor 已停止維護 |
完成上述配置後,FCKeditor 在 PHP 環境下將具備:中文介面、支援中文字型/像素字號、安全的檔案上傳與自動重命名功能。雖屬舊技術,但對維護現有系統仍具參考價值。