
O arquivo chega ao servidor, o PHP guarda-o numa pasta temporária e o seu código tenta mudá-lo para o lugar definitivo com move_uploaded_file(). Se esse passo falha, o aviso é “failed to open stream: Permission denied”, “No such file or directory” ou “Unable to move”. Não é um problema de tamanho (para isso há enviar arquivos grandes em PHP), é de caminho, permissões ou espaço. Há uma maneira de ver a causa: o código de erro do $_FILES.
Ler o código de erro do envio
Antes de mover o arquivo, o PHP deixa em $_FILES['campo']['error'] um número. Imprima-o numa página de ensaio, ou escreva-o no log de erros.
| Código | Significa | O que fazer |
| 0 | O envio deu certo. | Se mesmo assim falha, o problema é o passo seguinte: mover o arquivo. |
| 1 | Maior do que o limite do PHP. | Veja upload_max_filesize e post_max_size. |
| 2 | Maior do que o limite do próprio formulário. | Procure um campo MAX_FILE_SIZE escondido no formulário. |
| 3 | Só chegou uma parte. | Conexão cortada. Tente outra vez, com uma rede melhor. |
| 4 | Nenhum arquivo enviado. | Veja se o formulário tem enctype="multipart/form-data". Sem isso o $_FILES chega vazio. |
| 6 | Falta a pasta temporária. | Peça-nos ajuda: é do servidor. |
| 7 | Não conseguiu escrever no disco. | Pode ser o espaço da conta esgotado. Veja o contador no cPanel. |
| 8 | Uma extensão do PHP parou o envio. | Peça-nos ajuda com o endereço e a hora. |
Se o código é 0 e mover falha
|
|
|
|
|
| Cuidado com o que permite enviar. Se a pasta de destino está dentro do site e o usuário pode enviar um arquivo .php, quem o enviar corre código no seu servidor. Aceite só os tipos de que precisa, confira o tipo pelo conteúdo (e não só pela extensão), renomeie o arquivo e, se puder, guarde-o fora da pasta pública. |
| Em WordPress o erro aparece como “HTTP error” ou “Não foi possível mover o arquivo”. Veja aumentar o limite de envio do WordPress. Se o envio é muito grande ou frequente, use o SFTP: veja SFTP em vez de FTP. |
|
Já viu o código de erro e o caminho e ainda falha? Envie-nos a mensagem completa e o endereço da página. Abrir um pedido de suporte |
|
VEJA TAMBÉM Enviar arquivos grandes em PHP: upload_max_filesize e post_max_size Erro 403: permissões, .htaccess e IPs bloqueados |
PRODUTO RECOMENDADO Hospedagem de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde R$ 36,30/mês (plano de 3 anos, com cupom) Ver planos |











