2012-03-23 81 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