上传的文件没有文件所有者(在PHP中使用move_uploaded_file)

时间:2010-11-01 20:55:58

标签: php file-upload copy move

我使用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

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

检查实际上传的用户是谁

echo exec('whoami');

答案 2 :(得分:0)

除了在php.ini文件中设置upload_tmp_dir之外,请确保您设置的目录可由PHP写入。

如果您在IIS中使用PHP管理器,它默认为upload_tmp_dirC:\Windows\Temp,默认情况下PHP进程无法为我写入。