1--TEST-- 2Check for serialization handler, broken 3--SKIPIF-- 4<?php 5if (version_compare(PHP_VERSION, '5.2.0') < 0) { 6 echo "skip tests in PHP 5.2 or newer"; 7} 8if (!extension_loaded("session")) { 9 echo "skip needs session enabled"; 10} 11--FILE-- 12<?php 13if(!extension_loaded('msgpack')) { 14 dl('msgpack.' . PHP_SHLIB_SUFFIX); 15} 16 17error_reporting(0); 18 19$output = ''; 20 21function open($path, $name) { 22 return true; 23} 24 25function close() { 26 return true; 27} 28 29function read($id) { 30 global $output; 31 //broken data 32 return pack('H*', '81a36'); 33} 34 35function write($id, $data) { 36 global $output; 37 $output .= bin2hex($data). PHP_EOL; 38 return true; 39} 40 41function destroy($id) { 42 return true; 43} 44 45function gc($time) { 46 return true; 47} 48 49ini_set('session.serialize_handler', 'msgpack'); 50 51session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc'); 52 53session_start(); 54 55echo ++$_SESSION['foo'], PHP_EOL; 56 57session_write_close(); 58 59echo $output; 60var_dump($_SESSION); 61?> 62--EXPECT-- 631 6482c001a3666f6f01 65array(1) { 66 ["foo"]=> 67 int(1) 68} 69