簡體   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