Ten cuidado con el orden de las funciones .. algunas se usan -antes- del session_Start() y otras despues (sino, no tienen efecto .. como por ejemplo session_name() .. si la usas despues de session_start() no se altera el nombre de la sesión).
En tus pruebas .. session_cache_expire() se usa -antes- de session_start() (revisa la documentación oficial de esa función:
www.php.net/session_cache_expire) ... De todas formas .. esa función no afecta para nada al tiempo de vida de una sesión .. sino al de la página generada en las cache's de navegadores y demás (que es bien distinto).
Lo que necesitas hacer es alterar el valor de:
session.gc_maxlifetime
Algunas directivas de php.ini (como esa) se pueden alterar su valor vía:;
ini_set() .. otras con un .htaccess (según el proveedor) y otras sólo vía php.ini
En tu caso, la directiva session.gc_maxlifetime la puedes modificar por todo (por ini_set(), etc ...) no sólo por un php.ini
http://www.php.net/manual/en/ini.php#ini.list
Debes usar dicha función al principio de tu script .. antes de cualquier session_xx() preferentemente ... y lo tendrás que usar en todos los scripts que usen sesiones.
Un saludo,