Error de serialización PHP en offset, funciona en algunos servidores, no en otros

Tengo un código que funciona en un puñado de servidores, pero no en otros que vienen con datos serializados. Llamo a una página como esta:

http://domain/index.php/sales/Drilldowns?params=a:12:{s:13:"selectionType";s:8:"facility";s:8:"dateType";s:5:"daily";s:10:"dateOption";s:9:"drilldown";s:6:"metric";s:13:"bookingAmount";s:9:"companyFK";s:2:"11";s:10:"facilityFK";s:0:"";s:7:"classFK";s:0:"";s:15:"customDateStart";s:4:"null";s:7:"newDate";s:10:"2010-11-01";s:10:"metricName";s:10:"Bookings%20$";s:16:"currentDateRange";s:10:"11/01/2010";s:23:"currentMetricNavigation";s:8:"DELDELTE";}&getExcel=0 

Este es el código que estoy usando:

 protected function getRequestVariables(){ if(isset($_REQUEST['params'])){ var_dump($_REQUEST['params']); echo 'length:'.strlen($_REQUEST['params']); $vars = unserialize($_REQUEST['params']); var_dump($vars); } else { $vars = $_REQUEST; // unset saved drilldown options $this->ci->session->svar_set('postVars', null); } 

Este es un resultado var_dump :

 string(447) "a:12:{s:13:\"selectionType\";s:8:\"facility\";s:8:\"dateType\";s:5:\"daily\";s:10:\"dateOption\";s:9:\"drilldown\";s:6:\"metric\";s:13:\"bookingAmount\";s:9:\"companyFK\";s:2:\"11\";s:10:\"facilityFK\";s:0:\"\";s:7:\"classFK\";s:0:\"\";s:15:\"customDateStart\";s:4:\"null\";s:7:\"newDate\";s:10:\"2010-11-01\";s:10:\"metricName\";s:10:\"Bookings $\";s:16:\"currentDateRange\";s:10:\"11/01/2010\";s:23:\"currentMetricNavigation\";s:8:\"DELDELTE\";}" 

Cuando eso se procesa obtengo el siguiente error:

Se ha encontrado un error PHP
Gravedad: Mensaje de aviso: unserialize () [function.unserialize]: Error en el desplazamiento 6 de 447 bytes
Nombre de archivo: plugins / Drilldowns.php
Número de línea: 93

Estoy probando esto en 5.2.13 – funciona en algunos Linux, algunos OS X, no en otros. Ha comprobado php.ini, charset (creo) – No puedo entenderlo por mi vida. He intentado cosas tan simples como

 string(18) "a:1:{s:3:\"sam\";}" length:18 

y todavía errores. ¿Alguna pista de por qué?

Son las barras invertidas delante de las comillas: \"

Cuando los eliminas, funciona.

 var_dump(unserialize('a:12:{s:13:"selectionType";s:8:"facility";s:8:"dateType";s:5:"daily";s:10:"dateOption";s:9:"drilldown";s:6:"metric";s:13:"bookingAmount";s:9:"companyFK";s:2:"11";s:10:"facilityFK";s:0:"";s:7:"classFK";s:0:"";s:15:"customDateStart";s:4:"null";s:7:"newDate";s:10:"2010-11-01";s:10:"metricName";s:10:"Bookings $";s:16:"currentDateRange";s:10:"11/01/2010";s:23:"currentMetricNavigation";s:8:"DELDELTE";}"')); 

Los servidores en los que funciona, probablemente tienen citas mágicas activadas.

Tuve este problema y me tomó un tiempo resolverlo. Simplemente no pude encontrar una buena solución, pero esto es lo que hice para resolver mi situación:

  base64_encode(serialize($User)); // make sure to encode the serialized object unserialize(base64_decode($User)); // decode it before unserializing