- 环境准备:确保你的服务器环境满足要求。
- 下载与集成 UEditor:获取 UEditor 并将其放入你的 PHP 项目中。
- 后端配置:这是最关键的一步,需要修改 PHP 后端以处理视频上传。
- 前端使用:在页面中引入 UEditor 并测试上传。
- 常见问题与解决方案:解决上传过程中可能遇到的坑。
第 1 步:环境准备
在开始之前,请确保你的 PHP 服务器环境满足以下基本要求:

-
PHP >= 5.3.0:UEditor 对 PHP 的版本有一定要求。
-
fileinfo扩展:PHP 需要开启fileinfo扩展,用于正确识别文件类型,这是 UEditor 判断文件是否合法的关键。- 检查方法:在 PHP 代码中执行
phpinfo();,查找 "fileinfo"。 - 开启方法:编辑
php.ini文件,找到;extension=fileinfo,去掉前面的分号 ,然后重启你的 Web 服务器(如 Apache 或 Nginx)。
- 检查方法:在 PHP 代码中执行
-
上传目录权限:你需要一个用于存储上传文件的目录,并且该目录必须具有可写权限(通常是
755或777,777有安全风险,不推荐生产环境使用)。 -
php.ini相关配置:根据你预期上传的视频大小,调整php.ini中的以下值:
(图片来源网络,侵删)upload_max_filesize:单个文件上传的最大大小。post_max_size:POST 数据的最大大小,这个值必须大于或等于upload_max_filesize。memory_limit:PHP 脚本可使用的最大内存,建议也设置得大一些。
要允许上传最大 500MB 的视频,你可以设置:
upload_max_filesize = 500M post_max_size = 500M memory_limit = 512M
第 2 步:下载与集成 UEditor
-
下载 UEditor 访问 UEditor 的官方 GitHub 仓库,下载最新版本的 PHP 版本。
- 官方地址:https://github.com/fex-team/ueditor
- 在 Releases 页面找到
PHP版本的压缩包并下载。
-
解压并放置文件 将下载的压缩包解压,你会得到一个类似
ueditor-php的文件夹。 将这个文件夹(或重命名后,ueditor)复制到你的 PHP 项目根目录或指定目录下,我们把它放在public/ueditor目录下。 -
引入 UEditor 到前端页面 在你希望使用 UEditor 的 PHP 页面中,引入 UEditor 的 JS 和 CSS 文件。
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>UEditor PHP 视频上传测试</title> <!-- 引入 UEditor 的 CSS --> <link rel="stylesheet" href="/ueditor/themes/default/css/ueditor.css"> <style> body { font-family: Arial, sans-serif; padding: 20px; } #editor { width: 100%; height: 500px; } </style> </head> <body> <h1>UEditor PHP 视频上传测试</h1> <div id="editor"></div> <!-- 引入 UEditor 的 JS --> <script type="text/javascript" charset="utf-8" src="/ueditor/ueditor.config.js"></script> <script type="text/javascript" charset="utf-8" src="/ueditor/ueditor.all.min.js"></script> <!-- 实例化编辑器 --> <script type="text/javascript"> var ue = UE.getEditor('editor'); </script> </body> </html>
第 3 步:后端配置(核心步骤)
这是配置视频上传的关键,你需要修改 UEditor 的 PHP 后端代码,主要在 config.json 文件中。
-
找到
config.json文件 该文件位于你刚刚解压的 UEditor 文件夹内的php/config.json,路径类似:/ueditor/php/config.json。 -
编辑
config.json用一个代码编辑器打开这个文件,我们需要修改以下几个部分:-
A. 配置上传路径 找到
"imageUrl"和"scrawlUrl"等配置,你会发现它们都指向"../upload/",这个路径是相对于config.json文件所在目录(即php目录)的,实际的文件上传目录是项目根目录/ueditor/upload/。你可以修改这个路径,例如改成
"../../uploads/",这样文件就会上传到项目根目录/uploads/目录下。请确保这个目录存在并且有写入权限!// ... 其他配置 ... "imageActionName": "uploadimage", /* 执行上传图片的action名称 */ "imageFieldName": "upfile", /* 提交的图片表单名称 */ "imageMaxSize": 2048000, /* 上传大小限制,单位B */ "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */ "imagePathFormat": "/ueditor/php/../upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传路径格式 */ // ... 其他配置 ... -
B. 添加/修改视频上传配置 UEditor 已经内置了视频上传的配置,你只需要确保它被正确启用和配置,找到
"videoConfig"部分:"videoConfig": { "serverUrl": "/ueditor/php/controller.php?action=uploadvideo", // 视频上传的接口地址 "maxSize": 102400000, // 视频大小限制,单位B,这里是100MB "allowFiles": [ ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid" ] // 允许的视频格式 },serverUrl:这个 URL 指向处理视频上传的 PHP 脚本,默认值是/ueditor/php/controller.php?action=uploadvideo,这个路径通常是正确的。maxSize:根据你的php.ini设置,调整这里的大小限制(单位是字节B),500MB500 * 1024 * 1024 = 524288000。allowFiles:这里是允许上传的视频文件扩展名列表,你可以根据需要添加或删除。
-
C. 确认
controller.php存在 UEditor 的后端处理逻辑都在php/controller.php文件中,这个文件会根据action参数(如uploadvideo)来调用相应的处理函数。请确保这个文件存在并且没有被意外删除或修改。 -
D. (可选)配置远程图片抓取 如果你的内容中可能包含来自其他服务器的图片,并且希望将它们下载到自己的服务器上,可以配置
"catchImage",但这与视频上传关系不大,可作为了解。
-
第 4 步:前端使用与测试
-
打开你的 PHP 页面 通过浏览器访问你创建的那个包含 UEditor 的 PHP 页面。
-
找到视频上传按钮 在 UEditor 的工具栏上,找到视频上传的图标,它通常看起来像一个胶片或播放按钮的图标。
-
点击并上传视频 点击该图标,会弹出一个视频上传的对话框。
- 点击 "选择视频" 按钮,选择一个本地视频文件。
- 点击 "开始上传" 按钮。
-
观察结果
- 成功:如果一切配置正确,上传进度条会走完,然后视频会插入到编辑器中,并显示一个播放器预览。
- 失败:如果出现错误,请务必查看浏览器的开发者工具(F12),切换到 "Network" (网络) 标签页,找到名为
uploadvideo的请求,查看它的 "Response" (响应) 内容,这里会返回 UEditor 后端输出的 JSON 信息,通常会包含具体的错误原因(如"state": "文件大小超出限制")。
第 5 步:常见问题与解决方案
-
问题:上传失败,提示 "后端配置项没有正常加载,上传插件不能正常使用!"
- 原因:
config.json文件路径错误或无法被正确访问。 - 解决:检查
ueditor.config.js文件中的serverUrl配置,它应该指向你的config.json文件。// ueditor.config.js window.UEDITOR_CONFIG = { // ... 其他配置 ... serverUrl: "/ueditor/php/config.json" // 确保这个路径是正确的 };确保服务器能够通过这个 URL 访问到
config.json文件。
- 原因:
-
问题:上传失败,返回
state: "FILE_TYPE_NOT_ALLOWED"- 原因:你上传的视频文件扩展名不在
config.json中videoConfig.allowFiles列表里。 - 解决:打开
php/config.json,在videoConfig.allowFiles数组中添加你的视频文件扩展名。
- 原因:你上传的视频文件扩展名不在
-
问题:上传失败,返回
state: "请求大小超出系统最大限制"- 原因:上传的视频大小超过了
php.ini中upload_max_filesize或post_max_size的限制,或者超过了config.json中videoConfig.maxSize的限制。 - 解决:
- 检查并修改
php.ini中的相关配置,并重启服务器。 - 检查并确保
php/config.json中的maxSize值不小于你的php.ini设置。
- 检查并修改
- 原因:上传的视频大小超过了
-
问题:上传失败,返回
state: "保存上传文件失败"- 原因:最常见的原因是上传目录没有写入权限。
- 解决:
- 确认
config.json中"imagePathFormat"等路径配置指向的目录存在。 - 使用 FTP 或 SSH 连接到服务器,给该目录赋予正确的写入权限(通常是
755),在 Linux 命令行下,你可以使用chmod -R 755 /path/to/your/upload/directory。
- 确认
-
问题:视频能上传,但插入到编辑器后无法播放或显示为链接
- 原因:UEditor 默认的视频插入方式是生成一个
<a>链接,如果你想嵌入一个视频播放器,需要修改前端配置。 - 解决:在实例化 UEditor 时,传入配置项,指定视频插入方式为
embed。var ue = UE.getEditor('editor', { // ... 其他配置 ... videoEmbed: true // 强制使用 embed 方式插入视频 });
- 原因:UEditor 默认的视频插入方式是生成一个
通过以上步骤,你应该就能成功地在你的 PHP 项目中配置好 UEditor 的视频上传功能了,如果在操作中遇到其他问题,请仔细检查 config.json 的配置、服务器的权限设置以及浏览器的网络请求信息。
