Warning: file(temp/20180114134402/.): failed to open stream: Permission denied

Asked

Viewed 120 times

0

I am trying to give file() in a file in txt format but it gives this error use (localhost) and I tried to give permission... follows the code: line error: $data = file($linkfile);

    if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['BTEnvia'])) {
    session_start();//Inicializar a sessão com PHP
    $datadia    =   date("Ymd");
    $datadiaourday  =   date("dmY");
    $datahora   =   date("His");
    // Pasta onde o arquivo vai ser salvo
    $_UP['pasta'] = 'upload_zip/';
    // Pasta onde o arquivo vai ser extraido
    $_UP['pastatemp'] = 'temp/';
    // Tamanho máximo do arquivo (em Bytes)
    $_UP['tamanho'] = 1024 * 1024 * 50; // 50Mb
    // Array com as extensões permitidas
    $_UP['extensoes'] = array('zip', 'rar', 'rar5');
    // Renomeia o arquivo? (Se true, o arquivo será salvo como .jpg e um nome único)
    $_UP['renomeia'] = true;
    // Array com os tipos de erros de upload do PHP
    $_UP['erros'][0] = 'Não houve erro';
    $_UP['erros'][1] = 'O arquivo no upload é maior do que o limite do PHP';
    $_UP['erros'][2] = 'O arquivo ultrapassa o limite de tamanho especifiado no HTML';
    $_UP['erros'][3] = 'O upload do arquivo foi feito parcialmente';
    $_UP['erros'][4] = 'Não foi feito o upload do arquivo';
    // Verifica se houve algum erro com o upload. Se sim, exibe a mensagem do erro
    if ($_FILES['arquivo']['error'] != 0) {
        die("Não foi possível fazer o upload, erro:" . $_UP['erros'][$_FILES['arquivo']['error']]);
        exit; // Para a execução do script
    }
    // Caso script chegue a esse ponto, não houve erro com o upload e o PHP pode continuar
    // Faz a verificação da extensão do arquivo
    $tmp = explode('.', $_FILES['arquivo']['name']);
    $fileExtension = end($tmp); 
    $extensao = strtolower($fileExtension);
    if (array_search($extensao, $_UP['extensoes']) === false) {
        echo "Por favor, envie arquivos com as seguintes extensões: zip, rar ou rar5";
        exit;
    }
    // Faz a verificação do tamanho do arquivo
    if ($_UP['tamanho'] < $_FILES['arquivo']['size']) {
      echo "O arquivo enviado é muito grande, envie arquivos de até 50Mb.";
      exit;
    }
    // O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta
    // Primeiro verifica se deve trocar o nome do arquivo
    if ($_UP['renomeia'] == true) {
      // Cria um nome baseado no UNIX TIMESTAMP atual e com extensão .jpg
      $datadia_hora = $datadia.$datahora;
      $nome_final = "exp-$datadia_hora.zip";
    } else {
      // Mantém o nome original do arquivo
      $nome_final = $_FILES['arquivo']['name'];
    }

    // Depois verifica se é possível mover o arquivo para a pasta escolhida
    if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta'] . $nome_final)) {
        // Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo
        echo "Upload efetuado com sucesso!";
        echo '<a href="' . $_UP['pasta'] . $nome_final . '">Clique aqui para acessar o arquivo</a>';
        $arquivo_origem = "upload_zip/".$nome_final;
        $arquivo_destino = "temp/".$nome_final;
        if (copy($arquivo_origem, $arquivo_destino)){
        $pasta_destino = "temp/".$datadia_hora."/";
        $pasta_log = 'log/';
        $zip = new ZipArchive;
        $zip->open($arquivo_destino);
            if($zip->extractTo($pasta_destino) == TRUE){
                echo 'Arquivo descompactado com sucesso.';
                $zip->close();
                unlink("upload_zip/".$nome_final); // apaga o zip que foi upado
                    // verifica se existe a pasta log se não existir cria uma
                    if (file_exists($pasta_log) != TRUE) {      
                            @mkdir("log/", 0777, true);
                            // verifica se a pasta com o dia "exemplo:13012018" existe dentro de log se não cria uma
                            $pasta_dia = "log/".$datadiaourday; 
                            if (file_exists($pasta_dia) != TRUE) {
                                    @mkdir($pasta_dia, 0777, true);
                            }
                    }
                    // copia o zip para a pasta log
                    rename("temp/".$nome_final, "log/".$datadiaourday."/".$nome_final);
                    //Verifica todos os arquivos da pasta TEMP/dia-hora
                    $diretorio = dir($pasta_destino);
                    while(($arquivo = $diretorio->read()) !== false){
                    echo '<a href='.$pasta_destino.$arquivo.'>'.$arquivo.'</a><br />';
                            $linkarquivo = $pasta_destino.$arquivo;
                            chmod ($linkarquivo, 0777);
                            $dados = file($linkarquivo);
                            //Ler os dados do array
                            /*foreach($dados as $linha){
                                //Retirar os espaços em branco no inicio e no final da string
                                $linha = trim($linha);
                                //Colocar em um array cada item separado pela virgula na string
                                $valor = explode('|', $linha);
                            }*/
                        }
                    $diretorio->close();                
            } else {
            echo "Não foi possível enviar o arquivo, tente novamente";
            }
        } else {
        echo "Não foi possível copiar o arquivo tente novamente";
        }
    }
}
  • Jonathan you could post the error message you are getting?

  • Wouldn’t it be tmp ? You’re using Wampserver?

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.