【问题标题】:Can I safely delete all content in /var/lib/php5?我可以安全地删除 /var/lib/php5 中的所有内容吗?
【发布时间】:2012-03-01 14:59:27
【问题描述】:

我在/var/lib/php5 中有超过 500 万个会话文件 我想使用rm * 删除此文件夹中的所有文件,但是我不确定该目录中除了会话文件之外是否还有其他不应删除的文件。

通过 SSH 需要几分钟来计算文件数量,我不确定我是否可以使用所有这些随机文件名浏览那里。 设置是 ubuntu lucid linx、apache 2 和 php5。在最常见的设置中,/var/lib/php5 中是否还有其他我不应该删除的文件夹/文件?

编辑我想删除这些文件的原因是因为我将会话处理移到了数据库中,不再需要任何文件了。

【问题讨论】:

    标签: php session


    【解决方案1】:

    PHP7 中,这行得通

    cd /var/lib/php/sessions/
    sudo find . -name "sess_*" -print |sudo xargs rm -v
    

    如果您使用的是CODEIGNITER,请尝试使用以下命令。

    cd /var/lib/php/sessions/
    sudo find . -name "ci_*" -print |sudo xargs rm -v
    sudo find . -name "cises*" -print |sudo xargs rm -v
    

    【讨论】:

      【解决方案2】:

      在我的 ubuntu 电脑上,在 /var/lib/php5,有一个 sess ID 文件: sess_a7kjdaojmneuhcgslj

      如果我尝试使用以下命令删除此文件:

      sudo rm sess_a7*

      我收到一条错误消息,说没有这样的文件。我必须使用全名:

      sudo rm sess_a7kjdaojmneuhcgslj

      成功了。这是我的两分钱。

      【讨论】:

        【解决方案3】:
        cd /var/lib/php5
        sudo find . -name "sess_*" -print |sudo xargs rm -v
        

        这对我来说很有效。

        【讨论】:

          【解决方案4】:
          cd /var/lib/php5
          find . -name "sess_*" -print | xargs rm -v
          

          【讨论】:

          • 为什么不只是rm -v /var/lib/php5/sess_*
          • 由于文件数量庞大,rm 会提前退出并出现“参数列表太长”错误,并且不会实际删除任何文件。使用find 查找文件并将结果逐一传送到xargs 绕过此限制。 More information
          【解决方案5】:

          让 PHP 的 gc 自己执行清理。找到 php.ini 并将 session.gc_probability 更改为更大的值,保存并重新启动 Apache(调用任何 php 脚本)。这里说http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbage

          在 Debian 和 Ubuntu 中,/var/lib/php5 存储会话数据, 具有 drwx-wx-wt 权限,只能由 cron 清理 脚本。所以,包维护者禁用自动会话垃圾 收藏。

          或者您可以尝试将ini_set('session.gc_probability', 100); session_start();(如果您的session.gc_divisor 等于100)放在您的一个脚本中并调用它。最好的方法是放入空的php文件,因为它可能会执行很长时间的清理。

          ps:我也会尝试将 session.gc_probability 保留为 1 并将 session.gc_divisor 设置为 1。它应该在每次运行时调用 gc,但您只需要它来清理目录。

          并检查您的 cron /etc/cron.d/php5 - 它应该每半小时运行一次以清除 /var/lib/php5/ 目录中的会话文件。

          pps:发现有趣的评论

          这不会禁用它(它已被注释掉)。内的默认值 引擎仍在使用 - phpinfo() 显示值为 1。有一个 Debian(以及Ubuntu)中的垃圾收集问题,但那是 由于 PHP 想要清理已经被删除的垃圾 cron 脚本。这会导致可能显示在 不幸的页面。

          【讨论】:

          • 更改这些设置会删除所有旧会话文件吗?事实上,我只想尽快删除所有文件,但会话生命周期设置为 2 周。
          • @Moak 是的,它会删除过时的数据。您也可以更改 timelife 只是为了清理运行。顺便说一句,会话文件的名称中是否有任何特定部分?如果你愿意,你可以按它过滤。无论如何,检查 cron 作业并运行它。
          • 在我的情况下(SuSE 11.2),它起初不起作用。我发现当我发布rcapache2 reload 时应用了对php.ini 的更改。
          猜你喜欢
          • 1970-01-01
          • 2013-09-26
          • 1970-01-01
          • 1970-01-01
          • 2013-06-01
          • 2022-01-23
          • 1970-01-01
          • 2019-12-09
          • 1970-01-01
          相关资源
          最近更新 更多