今天安装方维O2O本地生活程序,页面空白,查看nginx错误日志,报错如下:

20077#0: *257 FastCGI sent in stderr: "PHP message: PHP Fatal error:  session_start(): Failed to initialize storage module: files (path: )

in /data/wwwroot/life.nx.cn/install/Runtime/~runtime.php on line 2" while reading response header from upstream, client: 111.113.232.192, server: life.nx.cn, request:

"GET /install/index.php HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi.sock:", host: "life.nx.cn"

解决方法有两种如下:

1。在报错的文件里的session start();之前加入如下代码:ini_set(‘session.save_handler’, ‘files’); 。这种方法适合租用空间的用户使用。

2。在php.ini文件里,显式指定session的save_path(比如 c:/temp)然后重启web服务。如果服务器的管理权限属于你,那还是这样改比较方便。

原因分析:php5一个安全模式的bug,默认session的save_path是系统的临时目录,这样会要校验权限。


 Fatal error: session_start(): Failed to initialize storage module: user (path: /tmp) in /home/***.php on line 1
从错误看来是系统临时目录/tmp无法保存session文件的问题,
原则上我们可以直接修改php.ini中的session.save_handler值从’user’到’files’。但是在虚拟空间里通常都没有修改权限。这是我的解决办法:
   if(!is_dir(’./tmp/’))mkdir (’./tmp/’, 0700);
   session_save_path(’./tmp/’);
   session_start();
直接在session_start前面增加上面的内容。
或者打开php.ini中的seession.path指定有权限的路径。