私は次のようにセッションに整数値を格納しようとしています:
if(!isset($_SESSION['images'])){
if(!isset($_SESSION['user_id'])){
$_SESSION['images'] = array();
array_push($_SESSION['images'], (int)$newFilename );
}
} else {
if(!isset($_SESSION['user_id'])){
array_push($_SESSION['images'], (int)$newFilename);
file_put_contents("upload.txt", (int)$newFilename);
}
}
しかし、同じコードは私のローカルホスト(php 5.3.13)では機能しますが、php 5.2.17でのホスティングでは機能しません(これが私がここで見ることができる唯一の違いです)。$ _SESSIONにオブジェクトを格納することにはいくつかの問題があることを知っていますが、次のような1次元配列だけを格納しようとしています。
$newFilename = $images->getLastFileId();
//$newFilename == array['200','201', '202'...n];
$ _SESSION ['images']に1つの要素がある場合、すべて正しく機能しますが、> 1の要素がある場合、エラーが発生し、オブジェクトがあること&object(__PHP_Incomplete_Class)#1
を示します(phpがオブジェクトvar_dump($_SESSION)
に格納しようとしているように見えます):$newFilename
$images
array(1) { ["images"]=> &object(__PHP_Incomplete_Class)#1 (9) { ["__PHP_Incomplete_Class_Name"]=> string(15) "ImageCollection" ["imgSize"]=>
string(0) "" ["imgAngle"]=> string(0) "" ["imgUrl"]=> string(0) ""
["imgDir"]=> string(7) "upload/" ["thumbDir"]=> string(9)
"upload/m/" ["imgPreviewDir"]=> string(0) "" ["avatarsWidth"]=> int(50)
["avatarsDir"]=> string(8) "avatars/" } }
繰り返しますが、このコードはローカルホストで正しく機能します。どこに問題があるのでしょうか?
UPDATE問題を解決しましたが、何がこの問題を引き起こしているのかよくわかりません。$_SESSION['images']
phpのバグかもしれませんが、名前を変更し た後、コードが正しく機能し始めます$_SESSION['imagesNew']
。そのため、$_SESSION変数の名前は変数$imagesの名前と同じではなくなりました。