上一个版本的 Phpmyadmin 会话启动错误

Posted

技术标签:

【中文标题】上一个版本的 Phpmyadmin 会话启动错误【英文标题】:Phpmyadmin Session Start error on last version 【发布时间】:2015-06-20 08:57:38 【问题描述】:

我已将 phpmyadmin 从 4.4.1 版本更新到 4.4.2 版本并开始出现此错误:

./libraries/session.inc.php#101 session_start() 中的警告:open(/var/lib/php/session/sess_bsv20h8gq58qq1ep33qbfrb7r62jtksi, O_RDWR) 失败:权限被拒绝 (13)

回溯

./libraries/session.inc.php#101: session_start() ./libraries/common.inc.php#349:需要(./libraries/session.inc.php) ./index.php#12: require_once(./libraries/common.inc.php)

这发生在两台安装了 Centos 6.6 的不同机器上。 服务器有 Apache 2.2、PHP 5.4 和 nginx 作为反向代理。

【问题讨论】:

【参考方案1】:

我最近在 SELinux 的 phpMyAdmin 4.4.3 上遇到了同样的问题。

首先检查你是否符合服务器要求http://docs.phpmyadmin.net/en/latest/require.html

其次,允许 SELinux 使用 PHP 会话:

grep php /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.pp

并将 PHP 的 session.save_path 权限更改为 root:root

chown -R root:root /var/lib/php/session
chown -R root:root /var/lib/php/wsdlcache

【讨论】:

【参考方案2】:

在我的情况下,我主要运行 nginx,因此需要将会话目录 chown 到 nginx 的用户和组...(默认情况下,会话文件夹在 apache 组中)。

chown nginx:nginx /var/lib/php/session

然后强制刷新phpMyAdmin页面,会话权限相关的错误就解决了。

如果现有会话,内容也是:-

chown -R nginx:nginx /var/lib/php/session    

【讨论】:

【参考方案3】:

我知道这是一个非常古老的问题,但我只用这行来解决问题:

chmod 777 to /var/lib/php/session

我的服务器详情,CentOS 6,提供者 vultr.com

【讨论】:

777 模式很少是正确的选择,因为它破坏了应用程序和系统所依赖的安全考虑。 chmod 770 /var/lib/php/session 效果很好。 这节省了我的时间。【参考方案4】:

请务必检查您的 php.ini 文件,特别是“会话”部分。

; The file storage module creates files using mode 600 by default.
; You can change that by using
;
;     session.save_path = "N;MODE;/path"
;
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
; http://php.net/session.save-path
session.save_path = "/var/lib/php/sessions"

如果您使用 memcache,您可能会遇到以下情况:

session.save_path = '127.0.0.1:11211'

默认情况下,它应该如下所示:

session.save_path = "/var/lib/php/sessions"

在将 php.ini 配置从一台服务器复制到另一台服务器时,我遇到了另一个服务器未使用 memcache 进行会话的问题。

【讨论】:

【参考方案5】:

Phpmyadmin 为这种情况提供配置。

    打开 config.inc.php 文件 添加phpmyadmin会话目录配置

$cfg['SessionSavePath'] = '/tmp';

phpmyadmin/doc/config.rst

config:option:: $cfg['SessionSavePath']
:type: string
:default: ``''``

Path for storing session data (`session\_save\_path PHP parameter
<https://secure.php.net/session_save_path>`_).

warning::

This folder should not be publicly accessible through the webserver,
otherwise you risk leaking private data from your session. 

【讨论】:

【参考方案6】:

类似于 zigojacko 发布的解决方案,对于 PHP 7.1,我需要以下命令:

chown nginx:nginx /var/lib/php/7.1/session

在运行 Nginx 的 Amazon Linux EC2 实例上。

【讨论】:

以上是关于上一个版本的 Phpmyadmin 会话启动错误的主要内容,如果未能解决你的问题,请参考以下文章

PhpMyAdmin - 错误无法在没有错误的情况下启动会话:如何修复?

PHP 会话无法在 CentOS 上使用 phpMyAdmin

phpmyadmin 超时后返回错误的数据库

phpMyAdmin 仅在 /etc/php.ini 不存在时工作

PHPmyadmin 错误

无法启动 Appium 会话,错误是:错误:启动应用程序需要参数“appPackage”