当前位置:  开发笔记 > 编程语言 > 正文

PHP 5.3和会话文件夹的问题

如何解决《PHP5.3和会话文件夹的问题》经验,为你挑选了2个好方法。

我最近升级到PHP 5.3,从那时起我得到(零星的)错误消息,表明Apache(或者可能是会话文件的清洁程序)对存储会话的文件夹没有权限.
这是随机发生的,不能用精确的步骤重现,这使我猜测它是会话更清洁.
任何人都有这种错误的经验吗?

错误消息(在该session_start()行上触发)是:

ps_files_cleanup_dir:opendir(/ var/lib/php5)失败:权限被拒绝.

会话目录中的ls -ltr给出:

drwx-wx-wt  2 root          root          4096 2010-05-25 12:39 php5

在这个目录中,我确实看到了www-data拥有的会话文件,这是我的Apache,应用程序运行正常.这让我想知道会话GC在哪个用户下运行?



1> 小智..:

修复:在你的php.ini设置session.gc_probability0

原因 我相信我找到了答案在这里http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbage

本质上,垃圾收集设置为由某些系统上的cron作业完成(即Ubuntu/Debian).像php-cli这样的php ini可执行文件也尝试进行垃圾收集,这会导致你得到的错误.


我也在Ubuntu 10.04上遇到这个问题,但是在检查php.ini后我发现`session.gc_probability`已经设置为'0`.
@Jonathan - 您可能会发现您的应用程序正在设置值.
@SynackSA奇怪的是,当我创建一个自定义的,特定于站点的php.ini文件时,就是当`session.gc_probability`触发到1.这甚至发生在php.ini文件中没有任何设置******!我在Ubuntu,Apache 2.2上运行suphp.我想知道这是不是某种类型的bug.无论如何,将`session.gc_probability = 0`添加到我的自定义,特定于站点的php.ini文件似乎解决了这个问题.
@Jonathan这是它的工作方式,默认值为1
这会禁用会话垃圾回收.您可能应该检查是否确实有一个cron清理会话.

2> Marie Fische..:

这似乎是Ubuntu服务器上的典型错误(我使用的是Lucid LTS)./ var/lib/php5目录的默认权限有

drwx-wx-wt  2 root     root     4096 2011-11-04 02:09 php5

因此它可以写入但不能被Web服务器读取,我想这可以解释错误.

由于Ubuntu通过cron(/etc/cron.d/php5)自己进行垃圾清理,因此最好根据Diwant Vaidya的建议禁用php的垃圾收集.

session.gc_probability = 0

事实上,会话文件夹不应该是世界可读的 - 正如PHP手册所说:

如果将此集保留在世界可读的目录中,例如/ tmp(默认值),则服务器上的其他用户可以通过获取该目录中的文件列表来劫持会话.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有