O Script funcionou perfeitamente no meu servidor online da Bysites. Mas no servidor local q instalei, apache, apresentou o seguinte erro:
Strict Standards: Only variables should be passed by reference in D:\web\dir\insertatualizar.php on line 39
A linha 39 é a linha:
Pergunta
jefponte
Tenho um script que serve para enviar um arquivo ao servidor. Ele apresenta um erro, também tem a desvantagem de não aceitar arquivos grandes.
Queria saber duas coisas:
1. Como faço pra que meu script funcione sem gerar mensagem de erro.
2. Qual alternativa ao php posso usar para que envie arquivos grandes para o servidor?
-----
Arquivo
dir/index.php
----- arquivo dir/insertatualizar.php<?php $arquivo = $_FILES['arquivo']['tmp_name']; $tamanho = $_FILES['arquivo']['size']; $tipo = $_FILES['arquivo']['type']; $nome = $_FILES['arquivo']['name']; // Pasta onde o arquivo vai ser salvo $_UP['pasta'] = '../dir/'; // Tamanho máximo do arquivo (em Bytes) $_UP['tamanho'] = 1024 * 1024 * 2; // 2Mb // Array com as extensões permitidas $_UP['extensoes'] = array('jpg', 'png', 'gif', 'pdf', 'doc', 'docx', 'odt', 'html', 'css', 'php', 'zip', 'mp3'); // Renomeia o arquivo? (Se true, o arquivo será salvo como .jpg e um nome único) $_UP['renomeia'] = false; // 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:<br />" . $_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 $extensao = strtolower(end(explode('.', $_FILES['arquivo']['name']))); if (array_search($extensao, $_UP['extensoes']) === false) { echo "Por favor, envie arquivos com as seguintes extensões: jpg, png, doc, docx, pdf ou gif"; } // Faz a verificação do tamanho do arquivo else if ($_UP['tamanho'] < $_FILES['arquivo']['size']) { echo "O arquivo enviado é muito grande, envie arquivos de até 2Mb."; } // O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta else { // 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 $nome_final = time().'.jpg'; } 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 '<br /><a href="' . $_UP['pasta'] . $nome_final . '">Clique aqui para acessar o arquivo</a>'; } else { // Não foi possÃvel fazer o upload, provavelmente a pasta está incorreta echo "Não foi possÃvel enviar o arquivo, tente novamente"; } } ?>O Script funcionou perfeitamente no meu servidor online da Bysites. Mas no servidor local q instalei, apache, apresentou o seguinte erro: Strict Standards: Only variables should be passed by reference in D:\web\dir\insertatualizar.php on line 39 A linha 39 é a linha:$extensao = strtolower(end(explode('.', $_FILES['arquivo']['name'])));Então, como posso fazer esse erro não existir?
Como posso enviar arquivos maiores, já q php só envia 20MB?
Desde já, agradeço a todos que leram o post.
Editado por jefponteLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.