刚刚接触php,自己搭了个apache+php的服务器
测试以下代码上传不成功,看了半天也没有找到问题(只知道好像是post的变量都没有接收到),麻烦大家帮我看看。到底是代码的问题,还是服务器配置出了问题。谢谢大家!
 上传脚本<html>
<head>
<title>简易文件上传系统前台页面</title>
</head>
<body>
<font size="5" color="#ff0000">
简易文件上传系统前台页面
</font>
<p>
<table border="1">
<form action="1.php" method="post" ENCTYPE="multipart/form-data">
<tr>
<td>选择文件:</td>
<td><input type="file" name="upfile"></td>
</tr>
<tr>
<td>提交选择:</td>
<td><input type="submit" value="提交选择"></td>
</tr>
</form>
</table>
</body>
</html>
服务端脚本<?php
echo "<html>";
echo "<head>";
echo "<title>";
echo "文件上传后台处理页面";
echo "</title>";
echo "</head>";
echo "<body>";
//判断是否有文件上传
//如果没有文件上传,显示相关内容 if(!isset($_GET["page"]) || !$_POST["upfile"])
{
  echo "没有选择文件!|| 上传出错!";
  echo "<p>";
  echo "点<a href=\"1.html\">这里</a>返回!";
  echo "<p>";
  echo "error code".$_FILES["upfile"]["error"];}
//如果有文件上传
else
{
  //定义文件上传路径为当前目录下的temp目录 
  //重新定义文件路径及文件名
  $name="/var/www/html/tmp/".$_FILES["upfile"]["name"];
  //移动上传的临时文件,为新的文件
  //如果移动成功,输出相应内容
  if(move_uploaded_file($_FILES["upfile"]["tmp_name"],$name))
  {
    echo "名为:".$_FILES["upfile"]["name"];
    echo "<p>";
    echo "的文件成功上传";
    echo "<p>"; 
    echo "点<a href=\"1.html\">这里</a>返回!";
  }
  //如果移动文件失败,输出相应内容
  else
  {
    echo "文件上传过程中出现错误!";
    echo "<p>";
    echo "文件上传失败";
    echo "<p>";
    echo "点<a href=\"1.html\">这里</a>返回!";
  }
}
echo "</body>";
echo "</html>";
?>

解决方案 »

  1.   

    什么都没有说清楚 ..//重新定义文件路径及文件名
      $name="/var/www/html/tmp/".$_FILES["upfile"]["name"];是不是这的路径问题..
      

  2.   

    不是啊  这个路径没有问题, 文件夹是建好了的,权限是0777.SELinux也关掉了
      

  3.   

    还有忘了说了    错误出在这里 if(!isset($_GET["upfile"]) || !$_POST["upfile"]) // 前面贴错了
     好像是没有接收到变量
      

  4.   

    你把 if(!isset($_GET["upfile"]) || !$_POST["upfile"]) 
    改成 if(empty($_FILES["upfile"]))
    谢谢
      

  5.   

     if(!isset($_GET["upfile"]) || !$_POST["upfile"]) //这行永远都为真。即永远不会进入else分支。如果你想判断上传文件是否为空的话,可以这样写:
    if(!$_FILES["upfile"]["name"])
      

  6.   

    谢谢  不过又出现新问题了。。failed to open stream: Permission denied in /var/www/html/1.php on line 32 Warning: move_uploaded_file(): Unable to move '/tmp/php07dZSx' to '/var/www/html/tmp/Screenshot.png' in /var/www/html/1.php on line 32 文件上传过程中出现错误!这个是不是权限的问题?可是两个目录下的权限都是777哇。。崩溃。。
      

  7.   


    权限没有问题啊   而且我现在发现 /tmp/php07dZSx 这个文件根本就不存在 是不是我压根儿就没有传上去呢
      

  8.   

    你在1.php首行打印一下$_FILES数组看看。print_r($_FILES); 
    如果有值的话, 你还从权限问题找找吧。临时/tmp和和目标tmp文件夹都改为0777
      

  9.   

    自己找到原因了。  selinux没有关  把权限给我限制了  我晕 这个问题困扰我好久阿