solo te recuerdo, que en Unix la barra inicial si tiene significado... osea,
/upload/ sería una ruta desde la raíz del sistema...
así que obviamente el problema está en dicha ruta...
lo mas sencillo es usar
getcwd() para obtener la ruta del script actual, y concatenarle lo demás...
Código PHP:
$ruta = getcwd() . DIRECTORY_SEPARATOR . 'upload';