繁体   English   中英

为什么PHP中的session_start抛出警告说文件很大

[英]why session_start in php is throwing warning saying file large

我没有更改任何代码,当我访问其中一个网页时突然发现

警告:session_start()[function.session-start]:open(..)失败:文件太大.. index.php在第二行。

另一个错误是:

警告:session_start()[function.session-start]:无法发送会话缓存限制器-标头已发送

第1行: <?php

第2行: session_start ();

问题

  1. 导致File太大的错误原因是什么? 什么文件大?

  2. 为什么突然没有任何文件修改就出现错误?

  3. 如果在session_start之前没有定义任何内容,甚至没有空格,为什么它会抛出“已发送标头”?

  4. 如何解决这个问题?

1.告诉File太大的错误原因是什么? 什么文件大?

  • 这似乎是托管服务提供商的问题,因为从未修改过原始文件,并且即使清除了缓存后,也已从多个浏览器尝试了该网页。 当您执行session_save_path("../_session1001"); 如下所述,您可以看到您的会话已写入该路径,因此可能是该文件在共享内存中变得太大,而现在我明确提到了将会话文件写入其中的物理空间。不再。

4.如何解决此问题?

  • 创建一个名为“ _session1001”的目录,并提供chmod 755,以便您的Web服务器(应用程序)可以写入该目录。
  • 在session_start session_save_path("../_session1001");之前添加此行session_save_path("../_session1001");
  • 确保通过.htaccess文件保护目录。

即: <?php session_save_path("../_session1001"); session_start(); <?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'中的旧文件将永远不会被删除!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM