我想要集成兩個PHP腳本(app1,app2),我試圖從app2中獲取app1的會話數據。刪除對象形成序列化數據
問題是,當我試圖從unserialize
APP1會話數據我得到一個小錯誤噸,由於PHP是試圖找到每個對象的__wakeup()
功能。
我無法使用unserialize_callback_func
修復程序,因爲app2使用它,因此它已經設置並且無法更改。
我不需要對象中的任何數據,是否有某種方式我可以刪除對象,所以他們不會造成任何問題?
我想要集成兩個PHP腳本(app1,app2),我試圖從app2中獲取app1的會話數據。刪除對象形成序列化數據
問題是,當我試圖從unserialize
APP1會話數據我得到一個小錯誤噸,由於PHP是試圖找到每個對象的__wakeup()
功能。
我無法使用unserialize_callback_func
修復程序,因爲app2使用它,因此它已經設置並且無法更改。
我不需要對象中的任何數據,是否有某種方式我可以刪除對象,所以他們不會造成任何問題?
您可以將unserialize_callback_func
設置爲您自己的,然後再將其更改。
$oldCallback = ini_get("unserialize_callback_func");
ini_set("unserialize_callback_func", "myNewCallback");
yourUnserialize();
ini_set("unserialize_callback_func", $oldCallback);
此外,如果對象不存在於應用2,你也可以使用自動加載上飛(沒有任何方法)創建類,但似乎更多的hackisch
更新斯科茨評論:
這是變得非常hackisch但它可能給作業:
<?php
$serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';
ini_set('unserialize_callback_func', 'mycallback');
function mycallback($classname)
{
eval("class $classname {}");
}
var_dump(unserialize($serialized_object));
?>
// Prints:
object(a)#1 (1) {
["value"]=>
string(3) "100"
}
什麼是你得到確切的錯誤? __wakeup是一個神奇的方法,只有在定義的時候纔會被調用,當沒有這種方法時引擎不應該拋出錯誤。 – 2010-07-19 08:41:46
錯誤來自app2 unserialize_callback_func設置。 – Scott 2010-07-19 09:17:50