2017-06-06 87 views
0

我并没有改变任何代码,突然间,当我访问的网页中的一个,我看到为什么在session_start在PHP抛出警告说,文件大

警告:在session_start()[function.session -start]:打开(..)失败:文件太大.. index.php的第2行

另一个错误是:

警告:在session_start()[function.session启动]:无法发送会话缓存限制器 - 已发送的头文件

线路1:<?php

线路2:session_start();

问题

  1. 是什么,告诉文件太大了出错的原因是什么?什么文件很大?

  2. 为什么在没有任何文件修改的情况下突然出现错误?

  3. 为什么在丢失'headers already sent'时,在session_start之前什么也没有定义,甚至没有空格?

  4. 如何解决这个问题?

回答

0

是什么,告诉文件太大了出错的原因是什么?什么文件很大?

  • 这似乎是主机提供商的问题,因为原始文件从未被修改过,并且即使在清除缓存后,网页也已经从多个浏览器尝试过。 当你做session_save_path("../_session1001");下面提到,你可以看到你的会话被写入该路径,所以可能是这个文件变得太大,在你的共享内存,现在我明确提到了一个物理空间来写会话文件到,这个错误是没有更多。

4.如何解决这个问题?

  • 创建一个名为say'_session1001'的目录并为chmod 755创建一个目录,以便您的web服务器(app)可以写入它。
  • 在session_start session_save_path("../_session1001");
  • 之前添加此行确保您通过.htaccess文件保护目录。

即: <?php session_save_path("../_session1001"); session_start();

在这里阅读更多:http://php.net/session_save_path

注:

Debian没有使用默认的垃圾收集的会议。相反,它将session.gc_probability设置为零,并且它运行一个cron作业来清理默认目录中的旧会话数据。

其结果是,如果你的网站设置自定义的位置,session_save_path()您还需要为session.gc_probability值,

如:

<?php session_save_path('/home/example.com/sessions'); ini_set('session.gc_probability', 1); ?>

在一个“/ home否则,旧文件/example.com/sessions'永远不会被删除!

相关问题