【问题标题】:Phpmyadmin Session Start error on last version上一个版本的 Phpmyadmin 会话启动错误
【发布时间】: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 作为反向代理。

【问题讨论】:

    标签: phpmyadmin


    【解决方案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 为这种情况提供配置。

          1. 打开 config.inc.php 文件
          2. 添加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 实例上。

            【讨论】:

              猜你喜欢
              • 2015-04-19
              • 2011-06-28
              • 2016-08-31
              • 2018-12-05
              • 2014-10-25
              • 2013-10-17
              • 2011-02-17
              • 1970-01-01
              相关资源
              最近更新 更多