各位大侠: 最近在做这么一个功能的PHP页面:
1>选择一个文件,然后上传. <BT种子>
2>上传成功后,通过move_uploaded_file函数,放置在指定的目录位置 
3>然后通过命令来对该放置在指定目录的文件,进行操作<BT下载>测试代码如下: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"];
  echo "<br>";
  }
if (file_exists("/mnt/sdb/upload/" . $_FILES["file"]["name"]))
     {
     echo $_FILES["file"]["name"] . " already exists. ";
     }
   else
     {
     move_uploaded_file($_FILES["file"]["tmp_name"],
     "/mnt/sdb/upload/" . $_FILES["file"]["name"]);     echo "Stored in: " . "/mnt/sdb/upload/" . $_FILES["file"]["name"];
     
     $mycmd = "/usr/sbin/mybt " . "/mnt/sdb/upload/" . $_FILES["file"]["name"] . " /mnt/sdb/";
     exec($mycmd); //此句会出错,提示xxx.torrent不完整,但是如果在命令提示符下单独执行这句话,就没有问题
     }?> <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>uploader</title>
</head>
<body><form action="upload.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>

解决方案 »

  1.   


    看看你的apache用户是否有权限执行相关的系统命令。
    --------
    指点迷津网  http://www.zhidianmijin.com
      

  2.   


    我没有对此PHP进行设置限制。
    另外补充。用copy函数也是不行的。
      

  3.   

    应该 是linux系统对apache帐户有限制的问题!
      

  4.   

    把上传文件的临时路径改到web的目录里就可以了
      

  5.   

    感谢大家的回复,及指点。 我认为:对于目录的权限应该可以排除。我后面还做过这样一个测试:
    就是一个页面专门用来上传,并 move_uploaded_file 成功后,马上用exit退出
    然后重新在一个页面,执行这条下载的命令,就成功。但是通过在 move_uploaded_file成功后,通过header重定向到这个执行的页面也是不行的,必须要让上传的页面退出后,再执行命令就成功。
      

  6.   


    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"];
      echo "<br>";
      }
    $path="/mnt/sdb/upload/" . $_FILES["file"]["name"];
    if(!is_dir($path)) {
    @mkdir($path, 0777, true);
    @chmod($path, 0777);
           }

    if (move_uploaded_file($_FILES["file"]["tmp_name"],$path){
         @chmod($path, 0777);
         echo "Stored in: " . $path;
          $mycmd = "/usr/sbin/mybt " . $path . " /mnt/sdb/";
         exec($mycmd); //此句会出错,提示xxx.torrent不完整,但是如果在命令提示符下单独执行这句话,就没有问题
         }?> <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>uploader</title>
    </head>
    <body><form action="upload.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>
      

  7.   

    在exec($mycmd);之前加一句
    if ($_FILES['file']['size']==filesize($path))
      

  8.   

    查php和system log看有没有报错
      

  9.   

    我保存的目录用的文件系统是windows下的FAT32文件系统, 莫非跟这个文件系统有什么关系么?