Linux Apache2.4 AWS环境下CKFinder3的sys_get_temp_dir不生效问题
CKFinder 迁移AWS EC2后无效请求错误修复方案
故障现象:本地环境正常运行的ckeditor/ckfinder插件迁移到AWS EC2后,点击功能图标返回
Invalid Request Error,请求http://projectdev-ip/labelin/public/_admin/ckeditor/ckfinder/core/connector/php/connector.php?command=Init&lang=en&langCode=en提示无效请求。
核心排查方向
你怀疑的临时目录配置是高概率故障点,对应配置代码$config['tempDirectory'] = sys_get_temp_dir();在EC2环境下存在权限适配问题。
分步修复操作
- 首先确认EC2实例上PHP默认临时目录的权限:
新建测试文件写入<?php var_dump(sys_get_temp_dir(), is_writable(sys_get_temp_dir())); ?>,访问后查看输出,确认Web运行用户(通常为nginx/apache/www-data)是否对该目录有读写权限。AWS默认对系统临时目录的权限管控严格,大概率会出现不可写的情况。 - 替换动态临时目录配置为项目内固定可写目录:
在CKFinder的config.php中修改配置,示例如下:// 注释原动态获取配置 // $config['tempDirectory'] = sys_get_temp_dir(); // 手动指定项目内可写目录,路径根据你的项目结构调整 $config['tempDirectory'] = __DIR__ . '/../../../storage/ckfinder_temp'; - 手动创建对应目录并赋值权限,执行命令:
mkdir -p /你的项目实际路径/storage/ckfinder_temp chown -R nginx:nginx /你的项目实际路径/storage/ckfinder_temp chmod -R 755 /你的项目实际路径/storage/ckfinder_temp - 额外校验项:
确认CKFinder的$config['authentication']回调函数在AWS环境下能正常返回true,权限校验失败也会返回无效请求错误;同时检查Web服务重写规则、EC2安全组是否拦截了connector.php的请求参数。
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

