cms php上传失败,PHPCMSV9无法上传附件,提示空信息的超级bug
这个问题折腾之久,浪费的时间、香烟之严重,就不多说了,反正Linux系统重做过两次,Nginx+Apache反复装了N次,都不成功。论坛也有很多解决办法,都治标不治本。
一开始发现系统在其它服务器上运行ok,就新部署的项目始终无法上传文件。所以一直把精力放到服务器的环境配置上了,比如上传大小限制,上传的目录权限,网站文件夹的权限设置,折腾了两个周末外加清明节。
悲催而操蛋的节日。
发现问题是无意中看到php的错误日志,定位到错误发生在移动临时上传文件到保存目录的地方,路径中多了一条下划线。
然后才看到这段离奇的代码
[php]
$temp_filename = $this->getname($fileext);
$savefile = $this->savepath.$temp_filename;
$savefile = preg_replace("/(php|phtml|php3|php4|jsp|exe|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(\.|$)/i", "_\\1\\2", $savefile);
$filepath = preg_replace(new_addslashes("|^".$this->upload_root."|"), "", $savefile);
if(!$this->overwrite && file_exists($savefile)) continue;
$upload_func = $this->upload_func;
if(@$upload_func($file['tmp_name'], $savefile)) {
$this->uploadeds++;
@chmod($savefile, 0644);
@unlink($file['tmp_name']);
$file['name'] = iconv("utf-8",CHARSET,$file['name']);
$uploadedfile = array('filename'=>$file['name'], 'filepath'=>$filepath, 'filesize'=>$file['size'], 'fileext'=>$fileext, 'fn'=>$file['fn']);
$thumb_enable = is_array($thumb_setting) && ($thumb_setting[0] > 0 || $thumb_setting[1] > 0 ) ? 1 : 0;
$image = new image($thumb_enable,$this->siteid);
if($thumb_enable) {
$image->thumb($savefile,'',$thumb_setting[0],$thumb_setting[1]);
}
if($watermark_enable) {
$image->watermark($savefile, $savefile);
}
$aids[] = $this->add($uploadedfile);
}
[/php]
我理解这个程序员哥哥的意图是对非法的文件扩展名进行安全过滤,但发生一件很碉堡的事情,就是把整个路径给进行了过滤。
[php]$savefile = preg_replace("/(php|phtml|php3|php4|jsp|exe|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(\.|$)/i", "_\\1\\2", $savefile);[/php]
$savefile已经是一个完整的路径了,如/wwwroot/cn.php.net/uploadfile/2012/04/balabal.jpg,本身应该是对balabal.jpg进行过滤,现在把cn.php.net也算进去咯。
所以,如果某位朋友的域名中恰好出现了php|phtml|php3|php4|jsp|exe|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl+.,悲惨的生活就开始咯
解决办法很简单。注释掉这行或者改成下面的代码
[php]
$temp_filename = $this->getname($fileext);
$temp_filename = preg_replace("/(php|phtml|php3|php4|jsp|exe|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(\.|$)/i", "_\\1\\2", $temp_filename);
$savefile = $this->savepath.$temp_filename;
[/php]
这个bug应该在V9所有版本中均存在,呜呼~~
我把修改之后的代码也发到这里了,献给所有欲哭无泪的战友们~~~
cms php上传失败,PHPCMSV9无法上传附件,提示空信息的超级bug相关推荐
- 究极方法!!!CSDN图片上传失败无法重新上传和删除的解决
有一次CSDN上传文件的时候因为直接复制MD笔记,然后出现一堆图片上传失败 然后草稿就保存不了了 显示这个东西: 如需帮助,请点击,进去也没什么卵用-.- 陷入无法删除也无法重新上传的尴尬,太难了.. ...
- 阿里云视频点播-视频上传失败(一直显示上传中)
控制台显示ErrorCode=null 这说明aliyun-java-vod-upload版本不对应 如今官网给出的最高版本为1.4.14,使用1.4.11版本即可上传成功 这里我将该1.4.11版本 ...
- linux php文件上传失败,linux不能上传文件
问题: 无法向Linux主机上传文件. 例如:我们现在想把A文件上传到 /opt/software 目录下,但是此时发现怎么都上传不上去.[isea@redis99 software]$ ll 总用量 ...
- px4在ubuntu中make px4fmu-v2_default upload上传失败
px4在ubuntu中make px4fmu-v2_default upload上传失败 在ubuntu中上传编译完成的px4固件时报错,提示 If the board does not respod ...
- 图片上传失败了?憋慌,有可能不是Bug哦~
常常有猿猿在创作的时候,会选择图文并茂的形式写成一篇文章.但是有时候会发现图片上传失败,憋慌,这很大可能不是Bug哦!可以先自行排查是否为以下原因: 0.网络状况不佳(如在不稳定的WiFi环境下,或网 ...
- onethink后台使用上传驱动时,文件上传失败
onethink后台最近使用阿里云的OSS上传驱动上传文件(thinkphp没有OSS驱动,自己百度找的一个驱动),碰到一个问题:后台建模的时候,选择了上传文件类型,但是实际上传失败,要么上传成功,插 ...
- 微信小程序之图片上传、多图上传、头像上传、头像获取、图片上传失败问题解决
小程序用户授权获取用户头像,需点击才可以让用户选择是否授权. 图片上传失败问题解决 图片上传 一定要记得修改合法域名,不然会失败,而且找不到报错信息哟!并且域名采用 https 点击,用户授权,获取用 ...
- html如何设计上传头像失败,【微信上传头像失败】微信上传头像失败怎么回事?...
微信上传头像失败怎么回事?不少小伙伴会遇到微信上传头像失败的情况,但不知道哪里出了问题.下面小编给大家总结了一些导致微信上传头像失败的原因,快来看看吧! 一.微信上传头像失败常见原因 1.有可能你需要 ...
- springboot上传文件及文件上传限制大小异常捕获
一个简单的页面上传文件,上传的接口是/upload,请求方法是post,enctype(表单类型)是multipart/form-data <!DOCTYPE html> <html ...
最新文章
- IEEE最新薪资报告 | 手机开发者年入153万,机器学习并非最高(附链接)
- 动手写一个简单版的谷歌TPU
- Java连接Oracle数据库示例
- cvpr 2015 2016论文地址
- php数组中插入数值,php中如何在数组指定位置插入数据单元
- MacosX 下GCC编译指定版本的代码
- php str pa,php截取字符串方法有哪些
- js和ajax点赞功能代码_FANUC数控机床:你会用“M代码”调用“系统程式”吗
- 笨办法学 Python · 续 练习 7:`grep`
- 一笔期货成交的始末(可能有问题)
- MariaDB 10.3 解决掉了UPDATE不支持同一张表的子查询更新
- 长大了还不如小时候那么能够坚持了
- 字符串常量池、堆、栈
- 『Tableau』 地图显示不正确的一种可能原因
- 政府支撑智慧城市建设 楼宇对讲投身社区成长
- Java语言十五讲(第十一讲 Script)
- 用计算机怎么谈黑人团队,光遇黑人抬棺乐谱怎么弹奏 计算机演奏乐谱16
- 计算机网络与互联网(三)
- 工作篇 之 解决谷歌地图与 NestedScrollView 滑动冲突
- 【JAVA类与对象----5(static、代码块)】