Move_uploaded_file - move arquivo para a pasta as vezes sim, outras não '-'

Olá a todos!

Tô tentando aprender php usando uma apostila da caleum de php e mysql e me deparei com um certo problema.

Deveria criar um formulario que adiciona anexos a tarefa em pdf ou zip. O formato do arquivo é verifica e se verdadeiro o nome do arquivo é salvo do banco de dados e o arquivo é movido para uma pasta chamada ‘anexos’, mas… nem sempre o arquivo é movido!

Então eu realmente não sei o problema que está acontecendo o problema.

Então gostaria de saber se alguém sabe algo sobre isso e dar uma opinião.

meu código é esse…

function tratar_anexo($anexo){
$padrao = ‘/^.+(.pdf|.zip)$/’;
$resultado = preg_match($padrao, $anexo[‘name’]);

if($resultado == 0){
	return false;
}

move_uploaded_file($anexo['tmp_name'], "anexos/{$anexo['name']}");
return true;

}

não sei onde estou errando :frowning:

A função retorna um booleano para confirmar se realmente moveu o arquivo ou não, tente debugar o retorno dela:

$subiu = move_uploaded_file($anexo['tmp_name'], "anexos/{$anexo['name']}");
var_dump($subiu);

Alguns pontos a considerar:

  • O form tem junto ao method=“post” um enctype=“multipart/form-data”?

  • Confirmou o tamanho máximo que o arquivo está indo para o servidor? (mais a respeito aqui e aqui)

  • Testou se o upload estava ok já com a global $_FILES[‘arquivo’][‘error’]? (mais a respeito aqui, adianto que precisa ser UPLOAD_ERR_OK para o upload bem sucedido)

  • Quando vc sobe o arquivo o que aparece ao debugar usando var_dump($_FILES)?

Sucesso e bons estudos!

Formulario está ok com multipart/form-data;

print_r ($_FILES); aparece - Array ( [anexo] => Array ( [name] => APOSTILA 2014 Eletricista FAETEC.pdf [type] => [tmp_name] => [error] => 1 [size] => 0 ) )

Parece que não está movendo para a pasta arquivos maiores de 2m.

:frowning:

Nesse caso vc precisa configurar o tamanho máximo no php.ini…

Obs: precisa reiniciar o apache/nginx etc (se mudar o php.ini) ou usar ini_set no topo do script (há exemplos no post que indiquei)