当前位置:网站首页>PHP文件上传小结(乱码,移动失败,权限,显示图片)
PHP文件上传小结(乱码,移动失败,权限,显示图片)
2022-06-30 19:49:00 【星哥玩云】
LAMP环境:
Linux Mint 16 32bits xfce
apache 2.4.6 Ubuntu
php 5.5.3
默认www是/var/www,我用符号连接到了/home/tony/www
然后修改sudo chmod 777 www
上传页面代码:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
<form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form>
</body> </html>
这个代码要加head指明字符集,下面的代码同理
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " .$_FILES["file"]["name"]. "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]."<br />"; } if(is_uploaded_file($_FILES["file"]["tmp_name"])){ echo "legal uploaded file<br>"; }else echo "illegai uploaded file<br>"; $src_path= $_FILES["file"]["tmp_name"]; $des_path= '/home/tony/www/upload/'."a.jpg"; //$des_path= '/home/tony/www/upload/'.$_FILES["file"]["name"]; echo $src_path . "<br />"; echo $des_path . "<br />"; if(file_exists($src_path)){ echo "file exists.<br />"; } if(move_uploaded_file($src_path,$des_path)){ echo "Stored in: "."<br />"; }else echo"<br>move failed."; printf("<img src=%s />","upload/a.jpg"); ?>
这段出来代码冗杂,不美观。但是说明了一些问题。
1/还是要指定字符集,不然在不同的浏览器或者系统上会有问题,apache2的配置文件不要AddDefaultCharset功能,如果改动过请改为AddDefaultCharset Off;重启apache2
2/临时文件在php执行之后就会消失,肉眼难见,可以在最后来个while(1);
3/有人问为什么不可以用其他函数来转移上传的文件呢?既然我都有路径了。http这套上传机制可以保证一定安全性,如果你能验证上传的安全性,其他函数也可以胜任
4/我老是move不成功,后来几经调查,是新的路径没有权限,都是linux的安全性惹的祸。试过用chmod -R 777 www,发现其下upload没有获得777的权限。。。这是bug?重新对upload改权限即可
最后插入图片用绝对路径不行,要用相对路径,到现在我都不明白为什么
应该在上传处理php那里加入一些文件类型检测啊,文件头检测啊,禁止运行的限制,这些安全性或者功能限制等到有空我再补上来吧。
边栏推荐
猜你喜欢

“更福特、更中国”拨云见日,长安福特王牌产品订单过万

Why must we move from Devops to bizdevops?

标配10个安全气囊,奇瑞艾瑞泽8安全防护无死角

微信小程序开发实战 云音乐

The prospectus of pelt medical was "invalid" for the second time in the Hong Kong stock exchange, and the listing plan was substantially delayed
Redis ziplist 压缩列表的源码解析

太湖 “中国健康农产品·手机直播万里行”走进太湖

CADD course learning (1) -- basic knowledge of drug design

1. 爬虫之Beautifulsoup解析库&在线解析图片验证码

盘点华为云GaussDB(for Redis)六大秒级能力
随机推荐
composer
Inventory the six second level capabilities of Huawei cloud gaussdb (for redis)
Lombok
Basic syntax of VB
RP原型资源分享-购物类App
Playwright - 滚动条操作
为什么一定要从DevOps走向BizDevOps?
Source code analysis of redis ziplist compressed list
PS2手柄-1「建议收藏」
4.3-inch touch screen 12 channel control port programmable network central control supports mutual backup of 5 central control hosts
企业中台规划和IT架构微服务转型
VB的基本语法
pytorch实现FLOPs和Params的计算
英语没学好到底能不能做coder,别再纠结了先学起来
Convert seconds to * * hours * * minutes
【ICCV 2019】特征超分检测:Towards Precise Supervision of Feature Super-Resolution for Small Object Detection
Data intelligence - dtcc2022! China database technology conference is about to open
Summary of operating system interview questions (updated from time to time)
CADD course learning (2) -- target crystal structure information
C语言:hashTable