之前,doccms在windows平台安装完后各功能都非常正常,最近做了一个网站放在linux平台的服务器上,结果后台登陆不了了。又重新装了一遍,还是不行,登陆密码是没错的,在登陆成功的瞬间又被重定向到登陆界面,所以看来不是软件的问题,便查看了一下/admini/index.php的源码。
if(empty($_SESSION[TB_PREFIX.'admin_name']) or $_SESSION[TB_PREFIX.'admin_roleId']<7){
redirect('login.php');
}
关键在于第一句的$_[SESSION]处,session是存在于服务器上的,windows没有问题,但是linux是有权限概念的,会不会session的文件夹不允许写入呢?
session的存储路径
在php.ini里的配置session.save_path是注释掉的,那么Seesion保存的路径在不同类型操作系统保存在什么位置?
Linux:
/tmp 或 /var/lib/php/session
Windows:
C:\WINDOWS\Temp
也可以去搜索以"sess_"开头的文件,来查找Seesion保存的路径
用ftp工具将/var/lib/php/session的文件夹权限设为777后,再登陆就可以进后台了。哈哈:)
附:linux权限详解
从左至右,第一位数字代表文件所有者的权限,第二位数字代表同组用户的权限,第三位数字代表其他用户的权限。
而具体的权限是由数字来表示的,读取的权限等于4,用r表示;写入的权限等于2,用w表示;执行的权限等于1,用x表示;
通过4、2、1的组合,得到以下几种权限:0(没有权限);4(读取权限);5(4+1 | 读取+执行);6(4+2 | 读取+写入);7(4+2+1 | 读取+写入+执行)
以755为例:
第一位7等于4+2+1,rwx,所有者具有读取、写入、执行权限;
第二位5等于4+1+0,r-x,同组用户具有读取、执行权限但没有写入权限;
第三位5,同上,也是r-x,其他用户具有读取、执行权限但没有写入权限。
下面列出常用的linux文件权限:
444 r--r--r--
600 rw-------
644 rw-r--r--
666 rw-rw-rw-
700 rwx------
744 rwxr--r--
755 rwxr-xr-x
777 rwxrwxrwx