No es necesario usar ftp o shell, puedes usar chmod desde PHP, por otro lado el segundo parámetro de move_uploaded_file es la ruta completa CON el nombre del archivo a subir, por eso es que te marca error:
Código PHP:
<?php
if (isset($_FILES['archivo'])){
$destino = './ficheros/' . $_FILES['archivo']['name'];
if(!move_uploaded_file($_FILES['archivo']['tmp_name'], $destino)) {
echo "error al copiar el archivo";
} else {
echo "archivo subido con exito";
}
} else {
?>
<form method="post" name="formulario" enctype="multipart/form-data">
<input name="archivo" type="file">
<input type='submit' name='enviar'>
</form>
</body></html>
<?php
}
?>
Saludos.