2013-12-14 92 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

相关问题