找回密码
 新建账号

PHP Warning: Wrong parameter count for session_set_save_handler()

[复制链接]
php 发表于 2017/12/16 13:55 | 显示全部楼层 |阅读模式
Warning: Wrong parameter count for session_set_save_handler() in path\to\wuxiancheng.cn\session.php on line 113
如果session_set_save_handler()的参数不是继承自SessionHandlerInterface的一个类对象,而是以多个回调函数作为参数,那么参数个数不能超过所使用版本的PHP支持的回调参数个数。
将多个回调函数作为session_set_save_handler()参数时,PHP 5.4及更早版本PHP只支持open, close, read, write, destroy, gc几个回调函数。
PHP 5.5增加了create_sid,该回调函数不需要参数,返回值为新的session id. PHP 7.1+可以使用PHP内置的session_create_id()来生成新的session id,早期版本需要自己去写代码实现。
PHP 7.0增加了validate_sid和update_timestamp,validate_sid回调函数的参数为当前session id,返回值为false时表示当前session id不符合要求,PHP会重新生成一个session id;update_timestamp回调函数的参数为当前session id,用来刷新时间戳,返回值为布尔值,如果返回值为false, PHP触发Warning: Unknown: Failed to write session data using user defined save handler.
create_sid, validate_sid和update_timestamp三个回调函数是可选参数,可以不设置,如果对不支持对应回调函数的PHP版本设置了超过该版本支持的参数个数,就会报Wrong parameter count for session_set_save_handler()的错误。
比如,在PHP 5.4中使用以下代码,PHP 5.4 session_set_save_handler()最多支持6个参数,设置9个会触发Wrong parameter count for session_set_save_handler()错误。
  1. session_set_save_handler(array($DSH, 'open'), array($DSH, 'close'), array($DSH, 'read'), array($DSH, 'write'), array($DSH, 'destroy'), array($DSH, 'gc'), array($DSH, 'create_sid'), array($DSH, 'validate_sid'), array($DSH, 'update_timestamp'));
复制代码
Warning: Wrong parameter count for session_set_save_handler() in path\to\wuxiancheng.cn\session.php on line 113

手机版|轻松E站

GMT+8, 2024/3/19 17:40

快速回复 返回顶部 返回列表