Hola,
En $directorio hay que poner una carpeta que exista y en la que PHP tenga permiso para escribir ficheros.
Y las razones para no funcionar son mucahs: que no tengas activado el upload en el PHP, que intentes subir ficheros mayores del tamaño especificado en el php.ini, ...
Revisa en el manual las secciones de
http://www.php.net/manual/en/features.file-upload.php
Saludos.