centos 会话处理程序::gc():ps文件清理目录|权限被拒绝(13)

qjp7pelc  于 2022-11-08  发布在  其他
关注(0)|答案(5)|浏览(177)

我有一个问题与PHP7在CentoOS(WHM/CPANEL)和Prestashop 1.7
系统给我这个消息:

Notice on line 429 in file /home/onywf3fr9a/public_html/app/cache/dev/classes.php

[8]会话处理程序::gc():ps文件清理目录:/var/cpanel/php/sessions/ea-php70中的所有文件都是空的。权限被拒绝(13)

xghobddn

xghobddn1#

我遇到了同样的问题,我在php.ini中将session.save_path x1c 0d1x更改为“/tmp”

7gcisfzg

7gcisfzg2#

我清除了缓存,问题已解决:)

mbjcgjjk

mbjcgjjk3#

用于固定
«Notice: SessionHandler::gc(): ps_files_cleanup_dir: opendir("/var/cpanel/php/sessions/ea-php70") failed: Permission denied"
我建议将对这个特定文件夹(/var/cpanel/php/sessions/ea-php70)的写访问权限授予您用于PHP解释器的操作系统帐户。
使用session.gc_probability=0 PHP设置禁用PHP的会话垃圾收集器并不是一个好的解决方案,因为您将在会话文件夹中有很多孤立的会话文件,这将浪费磁盘空间并降低服务器的速度。

ijnw1ujt

ijnw1ujt4#

发生此错误的原因是,您需要文件夹权限才能将会话文件存储在会话文件夹中。
此错误对于所有流行的框架都很常见。解决方案是1.为会话文件夹授予存储文件的权限,如图所示;或者2.在项目中创建一个本地会话文件夹,并重写项目中的会话文件存储路径。

xzlaal3s

xzlaal3s5#

背景
当PHP试图对过期会话进行垃圾收集,但包含会话文件的目录无法由PHP运行时的用户列出(缺少r访问位)时,会发生此错误。

**这通常是防止PHP会话劫持的安全措施。**例如,Debian将会话目录的权限设置为drwx-wx-wt。这些权限允许任何人创建会话,并且创建会话的用户如果知道文件名(会话ID)就可以再次读取它,但是只有root用户可以获得所有活动会话的 * 列表 *。

具有这种配置的发行版通常也会设置一个cronjob或定时器,用于定期清理会话并禁用php.ini中的本机垃圾收集:session.gc_probability = 0 .

可能的原因

1.您或其他人修改了php.ini,并将session.gc_probability更改为0以外的值。
1.一个PHP脚本在运行时使用ini_set()来修改session.gc_probability。一些PHP框架倾向于这样做。例如,如果没有另外配置,Symfony总是将session.gc_probability设置为1
1.您或其他管理服务器的人员在不使用cronjob或计时器来清理过期会话的系统上搞砸了会话目录权限。

溶液

  • 在验证您的安装使用cronjob/timer进行会话清理后,将php.ini中的session.gc_probability更改为0
  • CPanel使用/usr/local/cpanel/scripts/clean_user_php_sessions来删除过期的会话,因此所有CPanel安装都使用cronjob。
  • Debian、Ubuntu和Linux Mint使用systemd定时器phpsessionclean.timer来清除会话。
  • 防止Web应用程序覆盖session.gc_probability。对于基于Symfony的应用程序,可以通过修改config/packages/framework.yaml来实现:
framework:
    session:
        gc_probability: null
  • 如果您的系统确实使用了本机会话垃圾收集,而不是cronjob或计时器,请更改会话文件夹的权限,以允许列出运行PHP的用户:

# Check beforehand which group php-fpm runs as. Here I assume www-data:

chgrp www-data /var/cpanel/php/sessions/ea-php70
chmod g+r /var/cpanel/php/sessions/ea-php70

安全注意事项:更改权限将允许任何PHP脚本枚举所有活动会话ID并可能访问所有会话。只有在您确定上述解决方案不适用时才执行此操作!

    • (可能有危险)* 将session.save_path更改为/tmp或PHP可以访问以进行读写的类似目录。
      安全注意事项:将会话保存路径更改为全局可读的目录将允许任何程序和任何PHP脚本枚举所有活动会话ID并可能访问所有会话。仅当您确定上述解决方案不适用时才执行此操作!

相关问题