
O ficheiro chega ao servidor, o PHP guarda-o numa pasta temporária e o seu código tenta mudá-lo para o sítio 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 ficheiros 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 ficheiro, o PHP deixa em $_FILES['campo']['error'] um número. Imprima-o numa página de ensaio, ou escreva-o no registo de erros.
| Código | Significa | O que fazer |
| 0 | O envio correu bem. | Se mesmo assim falha, o problema é o passo seguinte: mover o ficheiro. |
| 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. | Ligação cortada. Tente outra vez, com uma rede melhor. |
| 4 | Nenhum ficheiro 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 utilizador pode enviar um ficheiro .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 ficheiro 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 ficheiro”. 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 ficheiros grandes em PHP: upload_max_filesize e post_max_size Erro 403: permissões, .htaccess e IPs bloqueados |
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde $6.60/mês (plano de 3 anos, com cupom) Ver planos |
- 0 Usuários acharam útil











