两天前登录phpmyadmin突然出错了,
“无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装。”
很奇怪前些天一直好好的,怎么就突然不能用了,把phpmyadmin文件拷到另外站点的目录里,运行,居然好了。但原来的目录就是不行。
用过后,就把另外站点里的phpmyadmin删掉了,原来目录里还是坏的,有时间再找原因解决。
今天,又要使用修改一些东西,原来目录里的还是坏的,重新从官方下载最新的3.3.1版上传,还是坏的;传到另外目录里也一样。看来这个问题总是要解决的了。
google了一下,有人说是“打开您的php.ini配置文件session.save_path = “某个路径”检查该项是否配置正确”,大致明白了,估计是phpmyadmin需要写session文件,但session目录没有相应权限所以报错“…发生错误时创建会话…”,错误信息里说明是session相关的,只是这个错误信息太简略了,不容易轻易看明白。
到服务器上修改php.ini,以前没有配置session.save_path的。于是C盘建一个session目录c:\tempfolder\phpsession,给phpmyadmin站点的web用户赋读写权限,在php.ini里加上一条
session.save_path=”c:\tempfolder\phpsession”
运行iisreset,进入 phpmyadmin站点,终于看到了久违的登录页面了。
分析一下原因,应该是这样的:
windows版的php应该默认使用系统临时文件目录,可能因为别的什么原因,之前有对临时文件目录的权限丢失了,所以就报上面错误
前几天拷到别的站点目录里,而这个站点的iis用户对windows临时文件有读写权限,所以可以正常使用phpmyadmin;今天,那个站点的iis用户也没权限了,就不行了。
至于网上有人说的,要赋everyone读写权限(甚至还有说赋“完全控制”的权限),就没必要了,只给相应的iis用户赋读写权限就可以;否则还是完全隐患。
顺便说一点,我的phpmyadmin没有放到自己电脑上,远程连接mysql服务器,而是直接把phpmyadmin放到mysql服务器上,这样正是为了安全其见。mysql的root用户只允许localhost连接,不允许从别的主机上连接。其它用户也是只允许在相应主机上访问。