上一个版本的 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