安装了一个MediaWiki后,尝试了一下它的使用.注册用户正常,登录,结果发现报错如下:
"Wiki uses cookies to log in users. You have cookies disabled. Please enable them and try again."
这个错误似乎是说本地的cookie没有加上,但是须知,登录怎么可能要wiki呢,保存session不就够了?
google之,得到似乎有用信息如下:
1. Open to LocalSettings.php 2. Go to the bottom of the page, and enter in the following code: session_save_path("tmp"); 3. Next create a directory called tmp in the folder where you have MediaWiki installed. 4. Done!
我尝试了下,效果是居然不再报错了,看来这个就是原因了: php session 存储地方有问题。 但是,这个fix看起来超级不靠谱,居然把session存在当前目录,这不是找虐么。但是,至少方向明确了,估计是session的存储遇到什么故障了。
因为是httpd的web server,直接检查error log (居然这时候才想到看http的log,真够废的), 发现每次登录的时候它会报错有内容如下:
.... PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0, referer: ...
很明显的,这就是原因了,如之前所推测的,默认的存储session的地方(/var/lib/php/session)是权限有问题.
$ ls -al /var/lib/php total 12 drwxr-xr-x 3 root root 4096 Sep 30 05:47 . drwxr-xr-x 27 root root 4096 Oct 26 04:02 .. drwxrwx--- 2 root apache 4096 Sep 30 05:47 session
发现这session用户是apache的,而httpd的server配置中,我用的是另外一个用户。
# chown -R my_usr:my_usr /var/lib/php/session
然后就发现不再有这个错误提示了. 搞定收工
2 Comments
boxer · December 18, 2015 at 17:30
这个帮助我解决了同样的问题,感谢!
yu · December 19, 2015 at 02:23
@boxer 荣幸