首页 > 建站教程 > CMS教程 > phpcms >  phpcms v9上传图片undefined解决办法正文

phpcms v9上传图片undefined解决办法

phpcms v9.42最新版本在上传图片的时候经常出现图片上传失败,提示错误信息“undefined”,故障现场如下图:
phpcms报错图
phpcms报错图

作为客户来讲,遇到问题,第一反应是我们的香港虚拟主机空间对附件上传进行了限制,所以找到询问情况,这也是可以理解的。但是,实际上不是这样,下面是几种解决办法:

解决方法一:
修改php.ini文件(此方法仅适用于VPS或者独立服务器,不适用于虚拟主机,这里仅供参考)。把extension=php_zip.dll前面的;号去掉(先确保php环境包下面的ext目录有php_zip.dll文件)。

解决方法二:
修改attachment.class.php文件
把 $this->upload_func = ‘copy’;
修改为 $this->upload_func = ‘move_uploaded_file’;

但是需要注意,这种方法可能会造成不能自动远程保存图片。

解决方法三:
把文件 phpcms\modules\attachment\attachments.php 文件下载到本地,然后使用文本编辑器打开,找到代码:if(empty($this->userid)){
修改为:if(empty($_POST['userid'])){
之后保存上传回到原空间进行覆盖就可以了。

原理:因为在上传图片提交时 $this->userid一定为空,但在调用时用到了$attachment->set_userid($_POST['userid']);
而$_POST['userid']即是userid的数据。因此将$this->userid改成$_POST['userid']即可。早期版本phpcms的attachments.php中就是$_POST['userid'],所以如果您怕修改错了文件,这里也可以下载早前版本的attachments.php进行替换。