Hola,
Curioso error. La unica explicacion que encuentro es que el PHP de linux no actualice el contenido del array $_SESSION hasta finalizar el script, y no estan disponible para consultar el valor hasta la siguiente pagina que ejecute el session_start(). Algo asi como pasa con las cookies, que no estan disponibles en el mismo script que les asigna el valor.
Mi consejo es que trabajes con una variable (pe, $errores), y una vez que hayas acabado con la localizacion de mensajes de error, hagas un:
Código PHP:
$_SESSION['rp_array_error']=$errores;
O que en lugar de usar el array_push() uses la sintaxis:
Código PHP:
$_SESSION['rp_array_error'][]= "First Name is required";
que hace lo mismo, añadir un elemento al final del array. Esto no se si funcionara.
Prueba y nos cuentas.
Saludos.