今天突然□□□发现,一个运行9个月的PHP万网Linux空间出现♦验证码无□□法通过,会员无法□□登陆,后台也无◣法登陆的□□问题,因为这几◢个功能一□□直运行很□□□□好,而且服务□□□器也是国□□内最好的□□□万网,页面访问□□□□很正常,所以感到□□□非常的奇□□怪。
经过菲律宾j9集团□□技术部检□□□测,是session无法保存□□□的问题,显示错误□□□语句是session_start();
详细错误□□□□信息如下:
open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/www/)
是空间保◇存session的默认路●径/tmp没有了权□□□□限,因为如果□□默认不设□□□□置session保存路径, session是保存在·网站根目•录tmp里的,出现这个□□问题的原□□因应该是□□□万网服务□□□器配置改□□□变,去掉了tmp的访问或□□□□修改权限,所以导致session读取和保□□□□存出错。所以出现□□□这个问题◢的原因是□□□万网服务□□□器配置改□□□变,解决办法□□□是自定义session的保存路◥径,关键代码•如下:
define('ROOT_PATH', str_replace("\\", '/', substr(dirname(__FILE__), 0, -9)));
$savePath=ROOT_PATH."/tmp/";//把session保存自己□□网站的跟□□目录,这样就没□□有目录限□□制了
session_save_path($savePath);
session_start();