session_start(): 无法在第 81 行的 /usr/share/phpmyadmin/libraries/session.inc.php 中初始化存储模块:memcache(路径:/var/lib/php5)

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/21387375/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 04:06:17  来源:igfitidea点击:

session_start(): Failed to initialize storage module: memcache (path: /var/lib/php5) in /usr/share/phpmyadmin/libraries/session.inc.php on line 81

phpsessionphpmyadminmemcached

提问by user3210366

I have i problem with myadminphp. I try to go inside admin area but when i use the url ,the page is white. I have seen on the error.log and i have this error

我对 myadminphp 有问题。我尝试进入管理区域,但是当我使用 url 时,页面是白色的。我在 error.log 上看到过这个错误

session_start(): Failed to initialize storage module: memcache (path: /var/lib/php5) in /usr/share/phpmyadmin/libraries/session.inc.php on line 81

session_start(): 无法在第 81 行的 /usr/share/phpmyadmin/libraries/session.inc.php 中初始化存储模块:memcache(路径:/var/lib/php5)

I don't know what i can do! Tx For all help

我不知道我能做什么!Tx 寻求帮助

My session.inc.php

我的 session.inc.php

<?php
  /* vim: set expandtab sw=4 ts=4 sts=4: */
  /**
   * session handling
 *
 * @todo    add failover or warn if sessions are not configured properly
 * @todo    add an option to use mm-module for session handler
 * @see     http://www.php.net/session
 * @uses    session_name()
 * @uses    session_start()
 * @uses    ini_set()
 * @package phpMyAdmin
 */
if (! defined('PHPMYADMIN')) {
    exit;
}

// verify if PHP supports session, die if it does not

if (!@function_exists('session_name')) {
    PMA_warnMissingExtension('session', true);
} elseif (ini_get('session.auto_start') == true && session_name() != 'phpMyAdmin') {
    // Do not delete the existing session, it might be used by other
    // applications; instead just close it.
    session_write_close();
}

// disable starting of sessions before all settings are done
// does not work, besides how it is written in php manual
//ini_set('session.auto_start', 0);

// session cookie settings
session_set_cookie_params(0, $GLOBALS['PMA_Config']->getCookiePath(),
    '', $GLOBALS['PMA_Config']->isHttps(), true);

// cookies are safer (use @ini_set() in case this function is disabled)
@ini_set('session.use_cookies', true);

// optionally set session_save_path
$path = $GLOBALS['PMA_Config']->get('SessionSavePath');
if (!empty($path)) {
    session_save_path($path);
}

// but not all user allow cookies
@ini_set('session.use_only_cookies', false);
// do not force transparent session ids, see bug #3398788
//@ini_set('session.use_trans_sid', true);
@ini_set('url_rewriter.tags',
    'a=href,frame=src,input=src,form=fakeentry,fieldset=');
//ini_set('arg_separator.output', '&amp;');

// delete session/cookies when browser is closed
@ini_set('session.cookie_lifetime', 0);

// warn but dont work with bug
@ini_set('session.bug_compat_42', false);
@ini_set('session.bug_compat_warn', true);

// use more secure session ids
@ini_set('session.hash_function', 1);

// some pages (e.g. stylesheet) may be cached on clients, but not in shared
// proxy servers
session_cache_limiter('private');

// start the session
// on some servers (for example, sourceforge.net), we get a permission error
// on the session data directory, so I add some "@"

// See bug #1538132. This would block normal behavior on a cluster
//ini_set('session.save_handler', 'files');

$session_name = 'phpMyAdmin';
@session_name($session_name);

if (! isset($_COOKIE[$session_name])) {
    // on first start of session we check for errors
    // f.e. session dir cannot be accessed - session file not created
    $orig_error_count = $GLOBALS['error_handler']->countErrors();
    $r = session_start();
    if ($r !== true || $orig_error_count != $GLOBALS['error_handler']->countErrors()) {
        setcookie($session_name, '', 1);
        /*
         * Session initialization is done before selecting language, so we
         * can not use translations here.
         */
        PMA_fatalError('Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.');
    }
    unset($orig_error_count);
} else {
    session_start();
}

/**
 * Token which is used for authenticating access queries.
 * (we use "space PMA_token space" to prevent overwriting)
 */
if (!isset($_SESSION[' PMA_token '])) {
    $_SESSION[' PMA_token '] = md5(uniqid(rand(), true));
}

/**
 * tries to secure session from hiHymaning and fixation
 * should be called before login and after successfull login
 * (only required if sensitive information stored in session)
 *
 * @uses    session_regenerate_id() to secure session from fixation
 */
function PMA_secureSession()
{
    // prevent session fixation and XSS
    session_regenerate_id(true);
    $_SESSION[' PMA_token '] = md5(uniqid(rand(), true));
}
?>

回答by vladkras

usually it means you have a wrong path in session.save_pathparameter in Apache config or php.ini

通常这意味着您session.save_path在 Apache 配置或 php.ini中的参数路径错误

try to set

尝试设置

ini_set("session.save_path", "/path/to/tmp");

in the beginning of your file. If it helps, edit your php.ini file, otherwise try to find it somewhere, maybe in VirtualHost section

在文件的开头。如果有帮助,请编辑您的 php.ini 文件,否则尝试在某处找到它,也许在 VirtualHost 部分

回答by user3210366

ok i have found the solution

好的,我找到了解决方案

 libraries/session.inc.php at line 79  // session.save_handler 
 ini_set('session.save_handler', 'files');

Commenting out this line, everything works fine.

注释掉这一行,一切正常。

回答by Daniel Santos

You just need to give permission to access this directory.

您只需要授予访问此目录的权限。

On Windows, just open the directory and the system will ask you to change permission to it.

在 Windows 上,只需打开目录,系统就会要求您更改其权限。

回答by Marcin Barylski

Please check code around:

请检查周围的代码:

// optionally set session_save_path
$path = $GLOBALS['PMA_Config']->get('SessionSavePath');
if (!empty($path)) {
    session_save_path($path);
}

You may try commenting it out and test one more time (implementation of session_save_path() is not posted here and I suspect that the issue is there).

您可以尝试将其注释掉并再测试一次(此处未发布 session_save_path() 的实现,我怀疑问题出在那里)。