use*_*372 3 php centos prestashop prestashop-1.7
我在CentoOS(WHM/CPANEL)和Prestashop 1.7中遇到PHP7问题
系统给了我这个消息:
Notice on line 429 in file /home/onywf3fr9a/public_html/app/cache/dev/classes.php
Run Code Online (Sandbox Code Playgroud)
[8] SessionHandler :: gc():ps_files_cleanup_dir:opendir(/ var/cpanel/php/sessions/ea-php70)失败:权限被拒绝(13)
cg9*_*909 23
r当 PHP 尝试对过期会话进行垃圾收集,但PHP 运行用户无法列出包含会话文件的目录(缺少访问位)时,会发生此错误。
这通常是针对 PHP 会话劫持的安全措施。例如,Debian 将会话目录的权限设置为drwx-wx-wt. 这些权限允许任何人创建会话,并且创建会话的用户如果知道文件名(会话 ID),则可以再次读取它,但只有 root 可以获取所有活动会话的列表。
具有此配置的发行版通常还会设置一个 cronjob 或计时器来定期清理会话并禁用 php.ini: 中的本机垃圾收集session.gc_probability = 0。
php.ini并更改session.gc_probability为 以外的值0。ini_set()进行修改session.gc_probability。一些 PHP 框架很容易出现这种情况。例如,如果没有另外配置,Symfony 总是设置session.gc_probability为1。在验证您的安装使用 cronjob/计时器进行会话清理后,将 php.ini更改session.gc_probability为。0
/usr/local/cpanel/scripts/clean_user_php_sessions删除过期会话,因此所有 CPanel 安装都使用 cronjob。phpsessionclean.timer进行会话清理。防止 Web 应用程序覆盖session.gc_probability. 对于基于 Symfony 的应用程序,这可以通过修改来完成config/packages/framework.yaml:
framework:
session:
gc_probability: null
Run Code Online (Sandbox Code Playgroud)
如果您的系统确实使用本机会话垃圾收集而不是 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
Run Code Online (Sandbox Code Playgroud)
安全通知:更改权限允许任何PHP 脚本枚举所有活动会话 ID 并可能访问所有会话。仅当您确定上述解决方案不适用时才执行此操作!
(潜在危险)更改session.save_path为/tmpPHP 可以访问并进行读写的类似目录。
安全通知:将会话保存路径更改为世界可读的目录允许任何程序和任何 PHP 脚本枚举所有活动会话 ID 并可能访问所有会话。仅当您确定上述解决方案不适用时才执行此操作!
小智 3
用于固定
\n\n\xc2\xabNotice: SessionHandler::gc(): ps_files_cleanup_dir: opendir("/var/cpanel/php/sessions/ea-php70") failed: Permission denied"
我建议将此特定文件夹 (/var/cpanel/php/sessions/ea-php70) 的写入访问权限授予您用于 PHP 解释器的操作系统帐户。
\n\n使用 session.gc_probability=0 PHP 设置禁用 PHP 的会话垃圾收集器并不是一个好的解决方案,因为会话文件夹中会有很多孤立的会话文件,这会浪费磁盘空间并减慢您的速度。服务器。
\n| 归档时间: |
|
| 查看次数: |
12567 次 |
| 最近记录: |