session 开始() : Session callback expects true/false return value in

标签 session nginx php-7 fpm

我有 Cs Cart 多供应商。我将 PHP 5.5 升级到 PHP 7.0。 并且有错误:

865 FastCGI sent in stderr: "PHP message: PHP Warning: session_start(): Session callback expects true/false return value in /var/www/cscart/app/Tygh/Session.php on line 341 PHP message: PHP Fatal error: session_start(): Failed to initialize storage module: user (path: /var/lib/php/sessions) in /var/www/cscart/app/Tygh/Session.php on line 341" while reading response header from upstream, client: 49.189.136.11, server:

目录/var/lib/php/sessions 有 0777。在其他站点上 session 工作正常。

文件Session.php:

 /**
 * Starts session
 * @param array $request Request data
 */
public static function start($request = array())
{
    // Force transfer session id to cookies if it passed via url
    if (!empty($request[self::$_name])) {
        self::setId($request[self::$_name], false);
    } elseif (empty($_COOKIE[self::$_name])) {
        self::setId(self::_generateId());
    }

    session_name(self::$_name);
    session_start();


    // Session checker (for external services, returns "OK" if session exists, empty - otherwise)
    if (!empty($request['check_session'])) {
        die(!empty($_SESSION) ? 'OK' : '');
    }

    // Validate session
    if (!defined('SKIP_SESSION_VALIDATION')) {
        $validator_data = self::getValidatorData();
        if (!isset($_SESSION['_validator_data'])) {
            $_SESSION['_validator_data'] = $validator_data;
        } else {
            if ($_SESSION['_validator_data'] != $validator_data) {
                session_regenerate_id();
                $_SESSION = array();
            }
        }
    }

    // _SESSION superglobal variable populates here, so remove it from global scope if needed
    if (Bootstrap::getIniParam('register_globals')) {
        Bootstrap::unregisterGlobals('_SESSION');
    }

}

服务器:NGINX、PHP7.0-FPM

最佳答案

session_start() 使用您之前使用 session_set_save_handler(...) 设置的任何处理程序,并且该处理程序(或各个函数)必须返回 true/错误结果表明成功或失败。您有一个不返回真/假结果的处理程序。

回顾一下;实际的错误是 session 处理程序的实现,而不是调用 session_start() 的代码。

关于 session 开始() : Session callback expects true/false return value in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39159015/

相关文章:

android - SSL HttpClient 连接中的 session 过期错误

Session_End 上的 asp.net session 变量

php - 使用 Nginx 而不是 Apache 时,单独的 MySQL 服务器是否有意义?

php - PHP 中 C# 的空值合并运算符 (??)

phpunit - 使 phpunit 捕获 php7 TypeError

php-7 - PHPDoc 特征函数的返回类型

php - 商店 codeigniter 购物车

PHP 在每次重新加载时创建新 session

database - 我需要在 Postgresql 中增加 max_connections 吗?

ruby-on-rails - Nginx 和 Mongrel 的区别?