El problema es obvio: la ruta actual (current working directory) se establece a partir de la ubicación del script en ejecución.
Eso todos lo saben, y PHP siempre ha tenido este comportamiento, es curioso que jamás lo hayas notado.
Ahora, seguramente tu idea es escribir siempre a partir de la raíz del sitio, y tiene sentido.
Sin embargo debes ser explícito acerca de la ruta a crear, dado que "upload/images/" es una ruta relativa, y siempre será relativa de acuerdo al script en curso.
Debes usar una ruta absoluta, la raíz del sitio se puede obtener así:
Código PHP:
Ver original$path = $_SERVER['DOCUMENT_ROOT'] . '/upload/images/';
¿Cual fopen raro?