【问题标题】:Cannot start session without errors in phpMyAdmin无法在 phpMyAdmin 中无错误地启动会话
【发布时间】:2011-06-28 03:21:50
【问题描述】:

将浏览器指向 phpMyAdmin 时出现以下错误

无法在没有错误的情况下启动会话,请检查您的 PHP 和/或网络服务器日志文件中给出的错误并正确配置您的 PHP 安装。

我已经检查了所有内容,但似乎无法弄清楚问题所在。

在我的 php.ini 文件中,我有:

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

权限:

drwxr-xr-x  2 root apache 4096 Feb 16 04:47 session

似乎没有任何效果。甚至将会话目录的权限更改为 777。

【问题讨论】:

  • 我在一个客户端的服务器上并且处于紧要关头,所以我运行了一个 mysqldump 并将返回值导入到我的服务器上的 pma 中。

标签: php session phpmyadmin


【解决方案1】:

如果您检查了浏览器并且没有问题,请在服务器端检查这些命令:

基于php.ini文件中的session.save_path,检查是否存在会话目录 (默认路径为:"/var/lib/php/session") 因此,如果路径不存在,请创建它。
现在可能需要更改目录的所有权,例如(更改:基于您的系统的用户:组)

sudo chown user:group /var/lib/php/session

然后授予会话路径权限:

sudo chmod 0777 /var/lib/php/session

现在刷新您的浏览器

【讨论】:

    【解决方案2】:

    就我而言,问题是由于磁盘空间不足。我想为像我这样的其他用户提及它:)

    【讨论】:

      【解决方案3】:

      我最近遇到了同样的问题。 它是通过截断 php 存储其会话数据的临时目录来解决的。

      ie 对于 Unix 操作系统: OP参考。文件(此临时目录因您的操作系统而异)

      find /var/lib/php/session -type f -delete
      

      截断目录后,我可以毫无问题地启动 phpmyadmin。 如果更改所有权和/或权限失败,我希望这可以帮助其他有同样问题的人。

      【讨论】:

        【解决方案4】:

        这有时是由于会话密钥无效。如果使用 XAMPP,对我有用的是在 XAMPP xampp/temp 中打开临时文件夹,然后删除以 sess_ 开头的会话文件

        【讨论】:

          【解决方案5】:

          停止777!


          如果你使用nginx(和我一样),只需将/var/lib/php/下文件夹的所有权从apache更改为nginx

          [root@centos ~]# cd /var/lib/php/
          [root@centos php]# ll
          total 12
          drwxrwx---. 2 root apache 4096 Jan 30 16:23 opcache
          drwxrwx---. 2 root apache 4096 Feb  5 20:56 session
          drwxrwx---. 2 root apache 4096 Jan 30 16:23 wsdlcache
          
          [root@centos php]# chown -R :nginx opcache/
          [root@centos php]# chown -R :nginx session/
          [root@centos php]# chown -R :nginx wsdlcache/
          [root@centos php]# ll
          total 12
          drwxrwx---. 2 root nginx 4096 Jan 30 16:23 opcache
          drwxrwx---. 2 root nginx 4096 Feb  5 20:56 session
          drwxrwx---. 2 root nginx 4096 Jan 30 16:23 wsdlcache
          

          还有/var/lib/phpMyAdmin/下的文件夹:

          [root@centos php]# cd /var/lib/phpMyAdmin
          [root@centos phpMyAdmin]# ll
          total 12
          drwxr-x---. 2 apache apache 4096 Dec 23 20:29 config
          drwxr-x---. 2 apache apache 4096 Dec 23 20:29 save
          drwxr-x---. 2 apache apache 4096 Dec 23 20:29 upload
          
          [root@centos phpMyAdmin]# chown -R nginx:nginx config/
          [root@centos phpMyAdmin]# chown -R nginx:nginx save/
          [root@centos phpMyAdmin]# chown -R nginx:nginx upload/
          [root@centos phpMyAdmin]# ll
          total 12
          drwxr-x---. 2 nginx nginx 4096 Dec 23 20:29 config
          drwxr-x---. 2 nginx nginx 4096 Dec 23 20:29 save
          drwxr-x---. 2 nginx nginx 4096 Dec 23 20:29 upload
          

          【讨论】:

          • 最好把 apache 放到正确的组中。
          • 我认为这是更好的解决方案
          • 很好的答案,777 会为坏人敞开大门,让他们在获得某种影响力时扰乱您的系统,除非在本地工作,否则请远离......
          【解决方案6】:

          我在 Windows server 2016 中发现的问题是 PHP 使用的临时目录的权限错误。我添加了IUSR。

          【讨论】:

            【解决方案7】:

            第一:如果不是session dir(在我的情况下是)

            sudo mkdir /var/lib/php/session
            

            第二:sessiondir设置权限

            sudo chmod 777 /var/lib/php/session
            

            【讨论】:

              【解决方案8】:

              问题可能是由于文件和文件夹权限;您可以尝试更改文件夹权限:

              sudo chmod 777 /var/lib/php/session/
              

              这将为 PHP 会话文件夹设置完整的读/写权限。

              注意:php/session/ 文件夹在某些服务器上可能位于不同的位置。检查您的 php.ini 以获取会话路径。

              【讨论】:

              • 这对于即时/临时修复很有用。使用777 权限是矫枉过正。这个答案只是调试“也许你只是没有足够的权限”,你可以通过sudo chmod 777 /var/lib/php/session/来尝试。
              【解决方案9】:

              问题还可能是您的php.ini 中有错误的session.save_handler 值。当我将其更改为memcached 时出现此错误,并在更改回files 时再次工作

              【讨论】:

                【解决方案10】:

                如果会话文件夹不可写,则登录失败。要检查这一点,请在您的 web 目录中创建一个 PHP 文件:

                <?php
                $sessionPath = 'undefined';
                
                if (!($sessionPath = ini_get('session.save_path'))) {
                    $sessionPath = isset($_ENV['TMP']) ? $_ENV['TMP'] : sys_get_temp_dir();
                }
                
                if (!is_writeable($sessionPath)) {
                    echo 'Session directory "'. $sessionPath . '"" is not writeable';
                } else {
                    echo 'Session directory: "' . $sessionPath . '" is writeable';
                }
                

                如果会话文件夹不可写

                sudo setfacl -R -m u:www-data:rwx &lt;session directory&gt;chmod 777 &lt;session directory&gt; -

                【讨论】:

                  【解决方案11】:

                  知道此线程已标记为已解决,它会在 Google 搜索中尽早显示给定术语。因此,我认为提及可能导致此错误的另一个原因可能会很有用。

                  如果您启用了“安全/安全 cookie”,则必须为 phpMyAdmin 禁用它,因为它不会在它们被激活时工作。所以请确保你没有类似的东西:

                  Header set Set-Cookie HttpOnly;Secure
                  

                  在您的配置中。

                  【讨论】:

                    【解决方案12】:

                    好的,

                    我正在使用 Windows 7 Ultimate 和 WAMP 2.4 服务器 tmp 文件夹丢失了,所以我创建了一个,这解决了我的问题。 检查 php.ini 文件的正确路径:session.save_path

                    【讨论】:

                      【解决方案13】:

                      对于 Xampp,从“根”文件夹中删除临时文件对我有用。

                      TH

                      【讨论】:

                        【解决方案14】:

                        我清除了浏览器缓存。创建了 phpinfo.php 中列出的会话文件夹。

                        成功了!

                        【讨论】:

                          【解决方案15】:

                          在您的php.ini 中设置session.save_path。确保您使用的是现有目录。

                          如果您仍然发现任何问题,则为您将使用该文件夹的用户授予该文件夹的写入和执行权限。[这专门用于 IIS 的情况]

                          【讨论】:

                            【解决方案16】:

                            在我的情况下,/var/lib/php/session 的所有权错误。我将其更改为 Apache 用户和组(网络服务器运行的用户和组),一切都很好。

                            【讨论】:

                            • 这是我在确保遵循上述建议后必须做的事情。在我的 EC2 服务器上,不知何故,我的 /var/lib/php/session 目录所有权被设置为不正确的用户:组。
                            • 这个答案对我有用。它们归 Apache 所有,但我使用的是 nginx。
                            【解决方案17】:

                            这个错误似乎有两个常见的原因,一个是与服务器配置和 session.save_path 有关,另一个是浏览器缓存。

                            如果您遇到此错误,请在尝试更改服务器上的 Apache 和 PHP 配置之前尝试使用不同的浏览器或机器!

                            注意,清除服务器的 Cookie 是不够的,还需要清除缓存。

                            在 Firefox 中清除所有历史记录和 cookie 很容易,但您可能不想摆脱 一切。清除缓存在 Firefox 中是隐藏的:

                            工具 > 选项 > 高级 > 网络: 缓存的网页内容 - 立即清除

                            【讨论】:

                            • Firefox - 清除缓存 = CRTL+F5
                            【解决方案18】:

                            我一整天都在解决同样的问题。我的答案是简单地清除浏览器的缓存。太糟糕了,我已经重新安装了 webserver/phpmyadmin 3 次。 :(

                            【讨论】:

                              【解决方案19】:

                              问题通常出在您的浏览器端。

                              您需要刷新浏览器缓存,删除服务器/主机的 cookie,然后重试加载 phpMyAdmin。

                              如果你想全力以赴,把服务器上的会话文件夹也清空一下。

                              一个可能的原因是浏览器和网络服务器之间的session data mismatch 导致它无法提取所需的会话信息并将此错误对话框转储到您的膝上。

                              【讨论】:

                              • 嗯,就我而言,我在主机上没有 'tmp' 目录,Apache 存储会话数据的地方。
                              • 嘿@shasi - 做一个&lt;? phpinfo(); ?&gt; 并寻找session.save_path
                              • 我必须将会话文件夹设置为 777 sudo chmod 777 -R /var/lib/php5 并清除我的缓存 ctrl + F5
                              • 这个答案是我的大部分解决方案。我打开了一个单独的 phpmyadmin。 (我想要 2 个窗口,1 个用于本地,1 个用于远程)。通过关闭一个窗口并清除浏览器缓存,错误就消失了。
                              • 这个方法对我不起作用,我也尝试从文件管理器中删除一些不必要的 .zip 文件但仍然是同样的错误
                              猜你喜欢
                              • 2014-10-25
                              • 2013-10-17
                              • 2021-03-18
                              • 2022-08-06
                              • 1970-01-01
                              • 2015-04-19
                              • 2015-01-09
                              • 1970-01-01
                              相关资源
                              最近更新 更多