前陣子把 PHP 升級到5.4後
發現有用到session的程式都爆了
Fatal error: Call to undefined function session_register()
google一下
原來是PHP 5.4的session寫法有改變
PHP 5.4 移除了 session_is_registered() 、 session_register() 與 session_unregister() 三支function。
Session 的操作更簡化了一些。
//判斷 Session 是否存在 if( isset($_SESSION['foo']) ) { echo 'session is exist'; } //註冊 Session $_SESSION['foo'] = 'bar'; //移除 Session unset($_SESSION['foo']);
這樣操作其實更直覺,也不需要額外多記函式(個人很健忘),這三支函式早該移除了。
但是大大小小的舊系統改起來也是不少麻煩
所以另一個做法就是把移除的function在script執行前先定義好:
<?php if ( !function_exists('session_register') ) { function session_register() { $args = func_get_args(); foreach ($args as $key) { $_SESSION[ $key ] = $GLOBALS[ $key ]; } } } if ( !function_exists('session_is_registered') ) { function session_is_registered( $key ) { return isset( $_SESSION[ $key ] ); } } if ( !function_exists('session_unregister') ) { function session_unregister( $key ){ unset( $_SESSION[ $key ] ); } }
這樣就可以相容舊系統了
不過還是比較建議移除舊寫法囉
Reference:http://blog.wu-boy.com/2012/06/what-has-changed-in-php-5-4-x/
剛好遇到這個問題 感恩!