2010-11-01 67 views
1

我正在使用move_uploaded_file函数上传文件。文件被移到正确的目录中,我看到它的物理存在,但我无法打开它们。我得到“访问被拒绝”错误。我查看文件的属性,发现它没有所有者。上传的文件没有文件所有者(在PHP中使用move_uploaded_file)

顺便说一句,我在Windows 2008

我检查的权限运行IIS,一切设置正确。运行Web服务的用户具有完全的管理权限。

此外,我用copy()替换了move_uploaded_file函数,并且我能够访问该文件。它也让用户运行服务器作为其所有者。

究竟什么可能是错的?

谢谢感谢您的帮助。

更新: 移动文件后,我尝试使用chmod($ filename,0655)设置权限,但也没有工作。

更新2(解决方案): 好吧,我想通了。 系统管理员没有设置upload_tmp_dir。一旦我们添加了一个路径,它就起作用了。

的源代码:

  // Check if file was uploaded 
    if(isset($_FILES['formname']) && $_FILES['formname']['size'] > 8){ 
     $displayName = $_FILES['formname']['name']; 
      $displayName = unixfilename(basename($displayName)); 

      $tempName = $_FILES['formname']['tmp_name']; 

     $filename = $_FILES['formname']['name']; 
     $fileType = substr($filename, strrpos($filename,".")+1); 
     $filename = substr($filename,0,strrpos($filename,".")) . date("_Ymd_His") . ".$fileType"; // Add unique identifier 
     $filename = unixfilename(basename($filename)); 

     $destinationPath = "xx\yy\zz\\"; 

     // Check if the file is of a valid type 
     if($fileType == "txt"){ 
      // Check if file exists in processor folder 
      if(!file_exists($destinationPath.$filename)){ 
       if(move_uploaded_file($tempName,$destinationPath.$filename)){ 
        if(file_exists($destinationPath.$filename)){ 
// success 
+0

请显示源代码。 – 2010-11-01 20:59:06

+0

新增源代码 – Kel 2010-11-01 21:06:23

回答

0
+0

嘿汤姆, 我发现这篇文章之前,它基本上说,使用复制功能。它使用复制功能,我知道使用is_uploaded_file来确保它是一个上传的文件。但我仍然好奇为什么这不会使用move_uploaded_file。 – Kel 2010-11-01 21:06:06

+0

其实我认为这是一种错误,就像在主题和手册中的注释中发现的一样:http://www.php.net/manual/en/function.move-uploaded-file.php#86332 – 2010-11-01 21:10:45

0

检查谁是谁做的上传实际上

echo exec('whoami'); 
0

除了在你的PHP upload_tmp_dir组中的用户。 ini文件,确保您设置的目录可由PHP写入。

如果您在IIS中使用PHP管理器,则默认为upload_tmp_dirC:\Windows\Temp,默认情况下,这是PHP进程不可写的。

相关问题