php文件上传的问题,修改权限后仍未解决

jovon 2012-05-15 04:57:22
ex.html提供前台上传控件:
<html>
<body>
<form action="ex.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>
ex.php后台处理程序:
<?php
if($_FILES["file"]["error"]>0)
{
echo "Error:".$_FILES["file"]["error"]."<br/>";
}
else
{

if($_FILES["file"]["type"]=="application/pdf")
{
if(file_exists("/home/sss/文档/".$_FILES["file"]["name"]))
{
echo $_FILES["file"]["naem"]."already exists";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],"/home/sss/文档/".$_FILES["file"]["name"]);
echo "Stored in:"."/home/sss/文档/".$_FILES["file"]["name"];
}
}
}
?>
错误提示为
/Warning: move_uploaded_file(/home/php上传文件.pdf): failed to open stream: Permission denied in /var/www/html/php/practice/ex.php on line 25 Warning: move_uploaded_file(): Unable to move '/tmp/php1GtkFY' to '/home/sss/文档/abc.pdf' in /var/www/html/php/practice/ex.php on line 25
修改了文档的权限为777,仍然有问题, 求指教。
...全文
492 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jovon 2012-05-16
  • 打赏
  • 举报
回复
在权限没有问题的情况下,是selinux在捣鬼。关闭selinux的方法为修改/etc/sysconfig/selinux文件:SELINUX=enforcing为SELINUX=disabled,重启生效,如果不想重启,用命令setenforce 0,然后就搞定了。一般selinux不需要开启。
xuzuning 2012-05-15
  • 打赏
  • 举报
回复
我怀疑你的路径写错了
目标文件的路径都去掉,看看还行不行
一起混吧 2012-05-15
  • 打赏
  • 举报
回复
可能还是apache 没给你相应的权限。改改apache配置文件,给相应目录权限。
jovon 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你这里面怎么会有三个文件?
1、/home/php上传文件.pdf
2、/tmp/php1GtkFY
3、/home/sss/文档/abc.pdf
这里哪两个是一个文件?

如果上传的是/home/php上传文件.pdf:
$_FILES["file"]["name"]:php上传文件.pdf
$_FILES["file"]["tmp_name"]:php1GtkFY
那么ab……
[/Quote]
为了简化路径和文件名,在发贴时改了一下代码,没改彻底。上传的文件是“php上传文件.pdf”,临时文件名是php1GtkFY,目标文件夹是/home/sss/文档/。
jovon 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

修改 /home/sss/文档 的权限为可读写即可
即 chmod('/home/sss/文档', 0666);

这个目录在 web 范围外,操作系统很可能不让匿名用户赋予执行权
[/Quote]
本来改成777了,仍有问题。刚试过改为666,也没解决,是不是还要改别的什么地方?
  • 打赏
  • 举报
回复
你这里面怎么会有三个文件?
1、/home/php上传文件.pdf
2、/tmp/php1GtkFY
3、/home/sss/文档/abc.pdf
这里哪两个是一个文件?

如果上传的是/home/php上传文件.pdf:
$_FILES["file"]["name"]:php上传文件.pdf
$_FILES["file"]["tmp_name"]:php1GtkFY
那么abc.pdf哪里来的?你的代码中并没有rename啊?!!

如果实在Linux上,请用 "./home/sss/文档/",不然会从根目录找起
xuzuning 2012-05-15
  • 打赏
  • 举报
回复
修改 /home/sss/文档 的权限为可读写即可
即 chmod('/home/sss/文档', 0666);

这个目录在 web 范围外,操作系统很可能不让匿名用户赋予执行权

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧