El problema es que explode no regresa una referencia y array_shift lo requiere para hacer su trabajo
la solución es sencilla; asigna el resultado de la función explode a una variable y esa variable pasala a la función array_shift.
Procura leer el manual con frecuencia para estar al día con los cambios y siempre mantener la versión mas reciente de php