2012-03-23 38 views
1

我已经创建了一个脚本,将文件上传到一个普通的uploads文件夹,但是当我尝试让脚本将文件从temp文件夹移动到uploads文件夹时,上传工作正常。我遇到以下问题。Uploadify和PHP移动文件问题

[23-Mar-2012 18:57:21 UTC] PHP Warning: move_uploaded_file(): Unable to move '/var/tmp/php3O42Kn' to '/home3/***/***/***/MAINFOLDER/uploads/itworks/' in /home3/***/***/***/MAINFOLDER/admin/uploader.php on line 21 

当我有上传在同一目录中uploader.php脚本这是工作文件夹,但是我把我的uploader.php脚本在/admin文件夹中,同时保持/uploads在根文件夹中。以下是我正在使用的脚本。

uploader.php(主/管理员)

<?php 

    if (!empty($_FILES)) { 
     $tempFile = $_FILES['Filedata']['tmp_name']; 


     $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/'; 
     $targetFile = str_replace('//','/',$targetPath) . $filename; 


     // $fileTypes = str_replace('*.','',$_REQUEST['fileext']); 
     // $fileTypes = str_replace(';','|',$fileTypes); 
     // $typesArray = split('\|',$fileTypes); 
     // $fileParts = pathinfo($_FILES['Filedata']['name']); 

     // if (in_array($fileParts['extension'],$typesArray)) { 
       if (!file_exists($targetPath)) { 
        mkdir(str_replace('//','/',$targetPath), 0755, true); 
       } 

      move_uploaded_file($tempFile,$targetFile); 
      echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile); 
     // } else { 
     // echo 'Invalid file type.'; 
     // } 
    } 
    ?> 

upload.php的(主/管理员)

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#file_upload").uploadify({ 
      'uploader'  : 'includes/uploadify.swf', 
      'script'   : 'uploadify.php', 
      'folder'   : '../uploads', 
      'cancelImg'  : 'includes/images/cancel.png', 
      'multi'   : true, 
      'auto'   : false, 
      'fileTypeExts'  : '*.jpg;*.gif;*.png', 
      'fileTypeDesc'  : 'Image Files (.JPG, .GIF, .PNG)', 
      'queueID'  : 'custom-queue', 
      'queueSizeLimit' : 10, 
      'simUploadLimit' : 3, 
      'sizeLimit' : 10240000, 
      'removeCompleted': true, 
      'onAllComplete' : function(stats) { 
       $('#status-message').text(data.filesUploaded + ' files uploaded, ' + data.errors + ' errors.'); 
      } 
     }); 
    }); 
</script> 

我认为这个问题是在这里:'folder' : '../uploads',。理想情况下,我希望uploader.php文件自动将目录推回到一个级别,但是我的所有方法似乎都没有奏效。

非常感谢任何能够帮助我解决这个问题的人!

+0

此错误可能来自许多问题。你确定这些目录是从你访问它们的路径存在的吗? – 2012-03-23 19:10:44

+0

确保您正在复制到的文件夹具有正确的权限 – 2012-03-23 19:14:05

+0

您是否已经双重检查了您正在移动并移动到的目录的权限?请记住,无论用户运行Web服务器还是PHP进程,都需要对两者都进行写入访问。 – ashurexm 2012-03-23 19:14:22

回答

1

根据当前管理员目录的根目录可能是下列之一。

'../../uploads' 

'../../../uploads 
+0

它只返回一个目录。所以它应该是“../”正确的? – 2012-03-23 19:20:31

+0

附件是我当前结构的屏幕截图(凌乱我知道,稍后我会清理它)http://cl.ly/FGSb 这是你需要的吗? – 2012-03-23 19:26:20

+0

您是否尝试过直接使用'uploads'而不是'../ uploads'?因为正如你所看到的,你正在将文档根目录与文件夹路径联系起来,所以我不认为有必要提高一个级别。删除'$ _SERVER ['DOCUMENT_ROOT']'或将'../ uploads'更改为'uploads'并查看它是否有效。 – 2012-03-23 19:35:29

0

如果你说当前配置是否工作正常,那么就应该有任何文件夹的工作。 但是,这个问题可能很容易来自非可写文件夹(你检查文件夹权限?)以在“../uploads/”中丢失尾部斜杠。

或者正如Interstellar_Coder所建议的,可能是另一组'../'丢失了。

+0

php脚本在main/uploads文件夹中创建好目录(测试权限设置为777)。 问题是从temp移动文件到它。 – 2012-03-23 19:21:48