実行しようとしているコードは次のとおりです。ローカルホストと別のサーバーの PHP バージョン 5.3.2-1ubuntu4.11 で正常に動作していましたが、共有ホスティングの PHP バージョン 5.2.17 で問題が発生します。
<?php
/* PHP version PHP Version 5.2.17
* Server API CGI/FastCGI
*/
session_start();
$products = array();
if (!isset($_SESSION['products'])) {
$products = array("somedata1", "somedata2", "somedata3");
$_SESSION['products'] = serialize($products);
$_SESSION['test_products'] = serialize($products);
echo "<br/>session products<br/>";
print_r(unserialize($_SESSION['products']));
echo "<br/>session test_products<br/>";
print_r(unserialize($_SESSION['test_products']));
} else {
echo "<br/>session products<br/>";
print_r(unserialize($_SESSION['products']));
echo "<br/>session test_products<br/>";
print_r(unserialize($_SESSION['test_products']));
}
?>
初回実行時の出力
session products
Array ( [0] => somedata1 [1] => somedata2 [2] => somedata3 )
session test_products
Array ( [0] => somedata1 [1] => somedata2 [2] => somedata3 )
しかしリロード時
session products
Warning: unserialize() expects parameter 1 to be string, array given in /home/uaustral/public_html/itoi/test.php on line 17
session test_products
Array ( [0] => somedata1 [1] => somedata2 [2] => somedata3 )
私のPHPバージョンPHPバージョン5.3.2-1ubuntu4.11でも同じコードが正常に動作します
何か不足していますか (新しい PHP バージョンでは自動的に修正されます)、それとも古いバージョンの PHP バグですか?