我有一个问题与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)
xghobddn1#
我遇到了同样的问题,我在php.ini中将session.save_path x1c 0d1x更改为“/tmp”
session.save_path
7gcisfzg2#
我清除了缓存,问题已解决:)
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的会话垃圾收集器并不是一个好的解决方案,因为您将在会话文件夹中有很多孤立的会话文件,这将浪费磁盘空间并降低服务器的速度。
«Notice: SessionHandler::gc(): ps_files_cleanup_dir: opendir("/var/cpanel/php/sessions/ea-php70") failed: Permission denied"
ijnw1ujt4#
发生此错误的原因是,您需要文件夹权限才能将会话文件存储在会话文件夹中。此错误对于所有流行的框架都很常见。解决方案是1.为会话文件夹授予存储文件的权限,如图所示;或者2.在项目中创建一个本地会话文件夹,并重写项目中的会话文件存储路径。
xzlaal3s5#
背景当PHP试图对过期会话进行垃圾收集,但包含会话文件的目录无法由PHP运行时的用户列出(缺少r访问位)时,会发生此错误。
r
**这通常是防止PHP会话劫持的安全措施。**例如,Debian将会话目录的权限设置为drwx-wx-wt。这些权限允许任何人创建会话,并且创建会话的用户如果知道文件名(会话ID)就可以再次读取它,但是只有root用户可以获得所有活动会话的 * 列表 *。
drwx-wx-wt
具有这种配置的发行版通常也会设置一个cronjob或定时器,用于定期清理会话并禁用php.ini中的本机垃圾收集:session.gc_probability = 0 .
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或计时器来清理过期会话的系统上搞砸了会话目录权限。
php.ini
session.gc_probability
0
ini_set()
1
/usr/local/cpanel/scripts/clean_user_php_sessions
phpsessionclean.timer
config/packages/framework.yaml
framework: session: gc_probability: null
# 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并可能访问所有会话。只有在您确定上述解决方案不适用时才执行此操作!
/tmp
5条答案
按热度按时间xghobddn1#
我遇到了同样的问题,我在php.ini中将
session.save_path
x1c 0d1x更改为“/tmp”7gcisfzg2#
我清除了缓存,问题已解决:)
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的会话垃圾收集器并不是一个好的解决方案,因为您将在会话文件夹中有很多孤立的会话文件,这将浪费磁盘空间并降低服务器的速度。
ijnw1ujt4#
发生此错误的原因是,您需要文件夹权限才能将会话文件存储在会话文件夹中。
此错误对于所有流行的框架都很常见。解决方案是1.为会话文件夹授予存储文件的权限,如图所示;或者2.在项目中创建一个本地会话文件夹,并重写项目中的会话文件存储路径。
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或计时器来清理过期会话的系统上搞砸了会话目录权限。
溶液
session.gc_probability
更改为0
。/usr/local/cpanel/scripts/clean_user_php_sessions
来删除过期的会话,因此所有CPanel安装都使用cronjob。phpsessionclean.timer
来清除会话。session.gc_probability
。对于基于Symfony的应用程序,可以通过修改config/packages/framework.yaml
来实现:安全注意事项:更改权限将允许任何PHP脚本枚举所有活动会话ID并可能访问所有会话。只有在您确定上述解决方案不适用时才执行此操作!
session.save_path
更改为/tmp
或PHP可以访问以进行读写的类似目录。安全注意事项:将会话保存路径更改为全局可读的目录将允许任何程序和任何PHP脚本枚举所有活动会话ID并可能访问所有会话。仅当您确定上述解决方案不适用时才执行此操作!