当PHPCms上传功能出现报错时,通常表现为文件上传失败、提示权限不足、文件类型限制或大小限制错误。系统可能返回“上传失败”、“没有上传权限”、“文件类型不允许”等具体错误信息。首先需要根据错误提示确定问题方向。
登录PHPCms后台,进入“内容”->“管理内容”->“添加内容”页面,尝试上传附件或图片。观察浏览器开发者工具(按F12打开)的“控制台”和“网络”标签页,记录完整的错误代码和HTTP状态码。
当上传文件超过系统限制时,会提示“文件大小超过限制”。需要修改以下配置:
打开/caches/configs/system.php文件,找到以下配置项:
``` 'upload_maxsize' => '2048', // 单位KB,修改为需要的大小,如10240表示10MB ```同时修改允许的文件类型:
``` 'upload_allowext' => 'jpg|jpeg|gif|png|bmp|swf|flv|mp4|mp3|wav|wma|wmv|mid|avi|mpg|asf|rm|rmvb|doc|docx|xls|xlsx|ppt|pptx|pdf|txt|zip|rar|gz|bz2', ```修改php.ini配置文件中的以下参数:
``` upload_max_filesize = 10M post_max_size = 12M max_execution_time = 300 max_input_time = 300 ```修改后重启PHP服务:
``` 根据系统选择对应命令 service php-fpm restart PHP-FPM service httpd restart Apache service nginx reload Nginx ```上传目录没有写入权限会导致“上传失败”或“没有权限”错误。
进入PHPCms安装目录,执行以下命令:
``` 检查当前权限 ls -la uploadfile/ 修复权限(假设web服务器用户为www) chown -R www:www uploadfile/ chmod -R 755 uploadfile/ chmod -R 777 uploadfile/attachments/ 附件目录需要写权限 chmod -R 777 uploadfile/video/ 视频目录 chmod -R 777 uploadfile/photo/ 图片目录 ```创建测试脚本/test_upload_permission.php:
``` ```通过浏览器访问该脚本,确认输出结果。
当上传的文件扩展名不在允许列表中时,会提示“文件类型不允许”。
编辑/phpcms/modules/attachment/classes/attachment.class.php文件,找到以下方法:
``` private function _get_allowext() { $ext_arr = array( 'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp'), 'flash' => array('swf', 'flv'), 'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb', 'mp4'), 'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf', 'txt', 'zip', 'rar', 'gz', 'bz2'), ); return $ext_arr; } ```
在对应数组中添加需要的文件扩展名,例如在'file'数组中添加'docm':
``` 'file' => array('doc', 'docx', 'docm', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf', 'txt', 'zip', 'rar', 'gz', 'bz2'), ```在同一个文件中找到_check_file_type方法,添加新的MIME类型检测:
``` private function _check_file_type($filename, $realname = '') { // ... 原有代码 ... // 添加新的MIME类型检测 $mime_types = array( 'docm' => 'application/vnd.ms-word.document.macroEnabled.12', // 添加其他需要的MIME类型 ); // ... 后续代码 ... } ```登录MySQL数据库,检查PHPCms的上传配置:
``` mysql -u用户名 -p密码 数据库名 ```执行SQL查询:
``` SELECT FROM phpcms_setting WHERE `key` LIKE '%upload%'; ```确认以下配置项的值:
``` upload_maxsize upload_allowext upload_path ```如果发现配置错误,执行修复SQL:
``` UPDATE phpcms_setting SET `value` = '10240' WHERE `key` = 'upload_maxsize'; UPDATE phpcms_setting SET `value` = 'jpg|jpeg|gif|png|bmp|swf|flv|mp4|mp3|wav|wma|wmv|mid|avi|mpg|asf|rm|rmvb|doc|docx|xls|xlsx|ppt|pptx|pdf|txt|zip|rar|gz|bz2' WHERE `key` = 'upload_allowext'; ```编辑Nginx站点配置文件(通常位于/etc/nginx/conf.d/或/usr/local/nginx/conf/):
``` server { ... 其他配置 ... client_max_body_size 20m; 增加客户端请求体大小限制 client_body_timeout 300s; 增加超时时间 client_header_timeout 300s; PHP文件上传处理 location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_param PHP_VALUE "upload_max_filesize=10M \n post_max_size=12M"; ... 其他fastcgi配置 ... } } ```编辑.htaccess文件或Apache配置文件:
```检查/statics/js/swfupload/目录下的文件是否完整,特别是:
如果文件缺失,从PHPCms安装包中重新复制:
``` cp -r phpcms_install_package/statics/js/swfupload/ /your_path/statics/js/swfupload/ ```编辑/statics/js/swfupload/swfupload.js,确保以下配置正确:
``` // 修改文件大小限制(单位:字节) file_size_limit : "10240 KB", // 修改文件类型描述 file_types_description : "All Files", // 修改允许的文件类型 file_types : ".jpg;.jpeg;.gif;.png;.bmp;.doc;.docx;.xls;.xlsx;.ppt;.pptx;.pdf;.txt;.zip;.rar;.gz;.bz2", ```创建/test_upload_all.php进行综合测试:
``` ```执行完所有修复步骤后,清除PHPCms缓存:
``` 删除缓存文件 rm -rf /caches/ rm -rf /phpsso_server/caches/ 或者通过后台操作 登录后台 -> 扩展 -> 更新缓存 -> 开始更新缓存 ```重新测试上传功能,按照上述步骤逐一排查,可以解决99%的PHPCms上传报错问题。如果问题仍然存在,检查服务器防火墙设置和安全组规则,确保没有阻止文件上传请求。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图