Php 发布ps_文件\u清理\u目录:权限被拒绝

Php 发布ps_文件\u清理\u目录:权限被拒绝,php,session,garbage-collection,ini,permission-denied,Php,Session,Garbage Collection,Ini,Permission Denied,以10%的概率,我在我的项目中得到以下问题: ps_files_cleanup_dir opendir(/var/lib/php5) failed permission denied (13) 根据我的一些研发经验,我了解问题的原因是: PHP正在尝试删除会话文件,同时也正在执行此操作 由Debian软件包维护人员在系统上放置的cron作业完成 PHP的。Ubuntu的软件包维护人员认为 清理PHP中的会话数据是不安全的 因此,我在互联网上四处搜索以解决此问题,并找到了两种解决方案: php.

以10%的概率,我在我的项目中得到以下问题:

ps_files_cleanup_dir opendir(/var/lib/php5) failed permission denied (13)
根据我的一些研发经验,我了解问题的原因是:

PHP正在尝试删除会话文件,同时也正在执行此操作 由Debian软件包维护人员在系统上放置的cron作业完成 PHP的。Ubuntu的软件包维护人员认为 清理PHP中的会话数据是不安全的

因此,我在互联网上四处搜索以解决此问题,并找到了两种解决方案:

  • php.ini
    session.gc\u概率设置为
    0
  • 在会话中写入自定义路径。保存路径
  • 解决方案1的问题是我不允许PHP管理 垃圾收集过程,并让操作系统(Ubuntu12.04)维护人员进行所有身份验证来处理这个和这个 可能会导致PHP不安全。所以,我不同意这个 解决方案

    对于第二个,我必须更改会话默认路径 将由php使用,默认路径(可能是tmp路径)由 Ubntu维护人员

    那么,在上述两种解决方案中,哪一种可能是最好和安全的?对于Ubuntu操作系统的会话权限问题,还有其他解决方案吗

    谢谢。

    您可以(也许应该)使用自己的会话处理程序;比如数据库支持的。然后,您可以将会话扩展到单个实例之外,同时解决您的问题

    编辑:您可以使用我的旧代码,这可能需要对DBAL进行一些修改


    Own Session Handler
    表示您希望我使用自定义会话路径?请参阅我的更新注释,基本上是的(但无需修改php.ini)。好的,这可能是第三种解决方案,但我需要确保代码能够完美地用于我的会话处理程序。由于只有10%的警告概率,我不能使用
    自己的或自定义会话
    ,您可以向其中一个方法添加一些内容,例如构造函数、析构函数或对10%的请求调用gc()的内容。i、 e.如果(兰特(1100)%10==0)$this->gc();此外,使用DB支持的会话处理程序时,您永远不会遇到错误,因为您的代码永远不会试图删除文件支持的会话文件,而您的debian实例将从未使用的会话中删除文件(因为它们现在是DB支持的)