有时候 phpMyAdmin 会出现无法访问的错误,显示错误提示信息 “Cannot start session without errors”。可能是服务器上的权限设置错误,也可能仅仅是因为客户端浏览器中的 cookies 问题。我采取了很简单的 YUM 方式来安装 phpMyAdmin,可还是碰到了好几次这样的问题。
错误提示信息如下:
phpMyAdmin – Error¶
Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.
客户端解决问题的方法¶
出现这个问题很有可能仅仅是因为浏览器中的 cookies 信息没有及时更新造成的,也许清空所有已经存储的 cookies 就能解决问题。当然,如果有耐心,也可以找到相应的 cookie 来针对性地清除。当然,最简单的方法就是使用 Chrome(incognito 模式)、Firefox(Private Browsing 模式)或者 IE9 (InPrivate Browsing)等浏览器的安全模式来禁用所有 cookie 和缓存等等,反正仅仅是测试一下。
如果这样解决不了问题,那就多半是服务器端的事儿了。先做客户端的工作,因为比较简单。在解决这些不容易找到根源(没有错误的错误)的问题的时候,采用排除法还是很有必要的。下面继续。
服务器端问题的解决方法¶
如果是服务器端,就很有可能是目录(PHP 放置 session 文件的目录)访问权限设置错误,或者是虚拟主机配置文件中对 phpMyAdmin 目录的访问权限没有设置正确。
我前些天配置 Linode VPS 时候就遇到了 phpMyAdmin 文件夹访问权限设置错误的问题,而且仅仅是因为我将 phpMyAdmin 文件目录做了个 ln -sf
的连接到网站目录的时候,没有将该网站目录设置为 Apache 可访问(刚开始的时候,suExe 模式运行需要该文件夹有 775 权限,我只给了 755 的权限)。
另外,采取我的那种 YUM 包安装的模式,一般不太可能出现 PHP 的 session 文件夹无法读写的情况。如果前面的方法还没有解决问题,可以继续下面的针对 session 文件夹读写权限问题的解决方法:
- 检查 php.ini 中对于 session.save_path 的定义。
grep "session.save_path" /etc/php.ini
- 检查显示出来的文件夹的权限。如果是默认的,上面的运行结果应该显示
session.save_path= "/var/lib/php/session"
。说明该文件夹位于/var/lib/php/session
。如此检查其权限ls -l /var/lib/php
- 如果上面指令输出的结果中有显示下面 2 者中的某一个(这里假设 Apache 的用户和用户组分别是 apache, apache)
drwxrwx---. 2 root apache 4096 Mar 14 14:01 session
或者
drwxrwx---. 2 apache apache 4096 Mar 14 14:01 session
就说明没有问题。否则就需要修改文件夹权限(或者把下面代码中的 root 换成 apache 也行):
chown root:apache /var/lib/php/session chmod 775 /var/lib/php/session
说明¶
上面的记录仅仅是根据我自己的系统环境来进行操作的。水景一页的系统环境在安装记录里有介绍。因为不同的系统环境和安装方法,可能某些目录和权限要求不太一样。仅供参考。©
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/phpmyadmin-cannot-start-session-without-errors/>。转载请保留此信息及相应链接。
学习了!
但没碰到过呀!
没有碰到不是更好嘛。
没碰到,说明可能是环境没有做更新,或者运行apache所使用的用户和组也是apache。
呵呵。我是每次升级下环境,就要重新定义次这个session目录的用户权限。
你的意思是升级内核或者什么组件之后就会遇到写权限错误的问题吗?我只遇到过 Apache 配置文件中权限设置错误的问题。
例如,我yum update下,里面只要有apache,或者php更新,好像主要还是php更新包,那我就需要设置一次。这也很正常,每次一安装,这个session目录的权限默认就变成了root:apache,而我运行apache的用户是www,能不改就怪了。
不过我觉得我有必要再学聪明点,把用户www也加入到apache这个组里面。这样就不用再做修改了。
哈哈,这的确是个好主意(我也是刚刚想到的)
嗯,好主意。我的直接就是 apache 运行。你还自己建了个 www 用户,不嫌麻烦啊。
嘿嘿,果然好使,看样子,我之前太笨了,一直每升级一次,目录的权限就去变更一次。
我觉得目录别775了。770就够了。这里面的内容也没必要让人家看。
哈哈,不会哦,我现在nginx和apache跑的就都是同一个账户。
这样设置了之后,再设置网站目录的权限,我觉得更加清晰些。