前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP文件上传小结(乱码,移动失败,权限,显示图片)

PHP文件上传小结(乱码,移动失败,权限,显示图片)

作者头像
星哥玩云
发布2022-06-30 19:28:03
1.9K0
发布2022-06-30 19:28:03
举报
文章被收录于专栏:开源部署

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那里加入一些文件类型检测啊,文件头检测啊,禁止运行的限制,这些安全性或者功能限制等到有空我再补上来吧。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档