2013-12-14 90 views
4

我試圖上傳文件,但我發現在我的瀏覽器在這種以下錯誤:move_uploaded_file未能打開流和權限被拒絕錯誤

Warning move_uploaded_file(public/upload/udesignwptheme138.zip) [function.move-uploaded-file]: failed to open stream: Permission denied in <b>/home/monivbr/public_html/classes/system/Util.php on line 1803 

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpJtBlbi' to 'public/upload/udesignwptheme138.zip' in /home/monivbr/public_html/classes/system/Util.php on line 1803 

這是我的PHP類,使上傳到我的服務器:

  foreach ($files as $file) 
      if($file['tmp_name'] != "" && $file['error'] != 4){ 

       if($file['size'] < 10000000000){ 
        $nome_antigo = $file["name"]; 
        $novo_nome = strtolower(preg_replace("/[^a-zA-Z0-9_.]/", "", strtr($nome_antigo, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC_"))); 


        $query = $conexao->prepare('SELECT MAX(id) AS maxId FROM tbArquivo'); 
        $query->execute(); 
        $arquivo = $query->fetchObject(); 

        $caminhoArquivo = 'public/upload/'; 
        $nomeArquivo = substr($novo_nome, 0, strripos($novo_nome, '.')).$arquivo->maxId; 
        if($idTipoArquivo == '6'){ //6 = arquivos xml de tradução 
         $caminhoArquivo = 'public/traducao/'; 
         $nomeArquivo = substr($novo_nome, 0, strripos($novo_nome, '.')); 
        } 

        $extensao = substr($novo_nome, strripos($novo_nome, '.')); 

低於這條線,其中位於錯誤:

move_uploaded_file($file["tmp_name"],$caminhoArquivo.$nomeArquivo.$extensao); 




        $query = $conexao->prepare("INSERT INTO tbArquivo 
               (idTipoArquivo, idComplementar, idComplementar2, nomeArquivo, caminhoArquivo, tamanhoArquivo, extencaoArquivo, excluido) 
               VALUES 
               (:idTipoArquivo, :idComplementar, :idComplementar2, :nomeArquivo, :caminhoArquivo, :tamanhoArquivo, :extencaoArquivo, 0)"); 
        $query->bindParam(":idTipoArquivo", $idTipoArquivo); 
        $query->bindParam(":idComplementar", $idComplementar); 
        $query->bindParam(":idComplementar2", $idComplementar2); 
        $query->bindParam(":nomeArquivo", $nomeArquivo);     
        $query->bindParam(":caminhoArquivo", $caminhoArquivo); 
        $query->bindParam(":tamanhoArquivo", $file['size']); 
        $query->bindParam(":extencaoArquivo", $extensao); 

        $query->execute(); 

       } 
      } 

這是我的.htaccess網絡樂:

php_value upload_max_filesize 30M 
php_value post_max_size 30M 
php_value max_input_time 6000000 
php_value max_execution_time 6000000 
php_value memory_limit 35M 

這是變量的var_dump:

var_dump($extensao); 
var_dump($file["tmp_name"]); 
var_dump($caminhoArquivo); 
var_dump($nomeArquivo); 

string(4) ".zip" string(14) "/tmp/phpKUpN24" string(14) "public/upload/" string(17) "udesignwptheme139" 

有人知道什麼culd是錯的?

+1

您的問題在警告中定義。您的Web服務器正在運行的進程沒有對嘗試移動上傳文件的文件夾的寫入權限。 – chanchal118

+0

chanchal,坦克的響應...但我相信,權限不是問題,因爲當我嘗試上傳小文件,我在上傳成功... – user2988966

+0

你可以打印文件信息數組?文件的大小是多少? – chanchal118

回答

13

也許你可以考慮更改文件夾上傳CHMOD 755或777

chmod 777 folder_path 

通過這一點,我們設置讀取。編寫和執行所有者,組以及其他人的權限。

+0

坦克的響應...我添加var_dump的上面的變量... – user2988966

+1

我改變了上傳文件夾的權限到777,現在它的工作...坦克! – user2988966

+0

不客氣。 – Artas

0

它因爲你沒有足夠的權限在文件夾。將此權限更改爲讀取和寫入。就這樣 !

+0

你如何爲Windows中的XAMPP做到這一點? – Pathros

相關問題