0
Hello, I’m using a simple file upload system with PHP and some problems will arise regarding the necessary permissions to use in Ubuntu
It’s the first time I’m using the same, with the Webmin tool and I don’t know what permissions to use, let alone how to give them.
My upload code:
if ( isset( $_FILES[ 'anexo' ][ 'name' ] ) && $_FILES[ 'anexo' ][ 'error' ] == 0 ) {
// Pasta onde o arquivo vai ser salvo
$_UP['pasta'] = '/../../arquivos_subidos/';
// Tamanho máximo do arquivo (em Bytes)
$_UP['tamanho'] = 1024 * 1024 * 2; // 2Mb
// Array com as extensões permitidas
$_UP['extensoes'] = array('docx', 'pdf', 'xls', 'xlsx');
// Renomeia o arquivo? (Se true, o arquivo será salvo como (nome unico + .docx)
$_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['anexo']['error'] != 0) {
return $templates->render->erro("Não foi possível fazer o upload, erro:" . $_UP['erros'][$_FILES['anexo']['error']]); // 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
$separaExtensao = explode('.', $_FILES['anexo']['name']);
$pegaUltimaExtensao = end($separaExtensao);
$extensao = strtolower($pegaUltimaExtensao);
if (array_search($extensao, $_UP['extensoes']) === false)
return $templates->render->erro("Por favor, envie arquivos com as seguintes extensões: docx, pdf ou xls");
// Faz a verificação do tamanho do arquivo
if ($_UP['tamanho'] < $_FILES['anexo']['size'])
return $templates->render->erro("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
// Primeiro verifica se deve trocar o nome do arquivo
if ($_UP['renomeia'] == true) {
// Cria um nome baseado no UNIX TIMESTAMP atual
$nome_final = md5(time()."$@(DU@$#%%").".".$extensao;
} else {
// Mantém o nome original do arquivo
$nome_final = $_FILES['anexo']['name'];
}
// Depois verifica se é possível mover o arquivo para a pasta escolhida
if (move_uploaded_file($_FILES['anexo']['tmp_name'], $_UP['pasta'] . $nome_final)) {
return $templates->render->sucesso("O arquivo foi enviado com sucesso.");
} else {
// Não foi possível fazer o upload, provavelmente a pasta está incorreta
return $templates->render->erro("Não foi possivel fazer o upload do arquivo, tente novamente");
}
}
PHP returns me the following error:
Warning: move_uploaded_file(/../../archive_subidos/13d0bd5da89e48105287dfba2e773163.docx): failed to open stream: No such file or directory in /var/www/html/core/ajax/novaProposta.php on line 81
Warning: move_uploaded_file(): Unable to move '/tmp/phpljFq6X' to '/.. /.. /arquivos_subidos/13d0bd5da89e48105287dfba2e773163.docx' in /var/www/html/core/ajax/novaProposta.php on line 81
My idea: the uploaded files don’t stay where php runs, inside the /var/www folder I created a call called "file files", but I don’t know how to configure the necessary permissions for the upload to be done successfully.
In Windows environment this script works properly.
Good morning, thank you! I executed the command and the upload was done successfully
– Everton Neri