- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在 CentoOS (WHM/CPANEL) 和 Prestashop 1.7 中遇到 PHP7 问题
系统给我这个消息:
Notice on line 429 in file /home/onywf3fr9a/public_html/app/cache/dev/classes.php
[8] SessionHandler::gc(): ps_files_cleanup_dir: opendir(/var/cpanel/php/sessions/ea-php70) 失败:权限被拒绝 (13)
最佳答案
当 PHP 尝试对过期的 session 进行垃圾回收,但包含 session 文件的目录对于 PHP 运行的用户不可列出(缺少 r
访问位)时,会发生此错误。
这通常是针对 PHP session 劫持的安全措施。 Debian 将 session 目录的权限设置为 drwx-wx-wt
。这些权限允许任何人创建 session ,创建 session 的用户如果知道文件名( session ID)可以再次阅读它,但只有 root 可以获取所有事件 session 的列表。
具有此配置的发行版通常还会设置一个 cronjob 或计时器,定期清理 session 并在 php.ini 中禁用 native 垃圾收集:session.gc_probability = 0
。
php.ini
并更改了 session.gc_probability
为 0
以外的值。ini_set()
在运行时修改 session.gc_probability
。一些 PHP 框架容易出现这种情况。例如。 Symfony always sets session.gc_probability
to 1
if not configured otherwise .在验证您的安装使用 cronjob/timer 进行 session 清理后,将 php.ini 中的 session.gc_probability
更改为 0
。
/usr/local/cpanel/scripts/clean_user_php_sessions
删除过期 session ,因此所有 CPanel 安装都使用 cronjob。phpsessionclean.timer
进行 session 清理。防止 Web 应用程序覆盖 session.gc_probability
。对于基于 Symfony 的应用程序,这可以通过修改 config/packages/framework.yaml
来完成:
framework:
session:
gc_probability: null
如果您的系统确实使用 native session 垃圾收集而不是 cronjob 或计时器,请更改 session 文件夹的权限以允许列出运行 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 脚本枚举所有事件 session ID 并可能访问所有 session 。仅当您确定上述解决方案不适用时才执行此操作!
(潜在危险) 更改 session.save_path
到 /tmp
或 PHP 可以访问以进行读写的类似目录。
安全通知:将 session 保存路径更改为世界可读目录允许任何程序和任何 PHP 脚本枚举所有事件 session ID 并可能访问所有 session 。仅当您确定上述解决方案不适用时才执行此操作!
关于php - SessionHandler::gc():ps_files_cleanup_dir |权限被拒绝 (13),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47043351/
我在 CentoOS (WHM/CPANEL) 和 Prestashop 1.7 中遇到 PHP7 问题 系统给我这个消息: Notice on line 429 in file /home/onyw
有这个问题。我知道也有类似的问题,但没有一个提供解决方案。 Windows Server 2019服务器核心 IIS下的PHP 7.3.7 x64。 错误信息: PHP Fatal error: Un
我目前正在使用(除其他外)Zend_Auth 开发一个新应用程序,但无论出于何种原因,此错误消息完全随机地出现在任何位置(或者它接缝) Zend_Session::start() - /home/ha
我是一名优秀的程序员,十分优秀!