php session.save.path 不是来自我的 ini 文件

php session.save.path 不是来自我的 ini 文件

我已经为开发站点设置了自定义 php.ini(生产站点最终将位于同一台服务器上) - 它将 session.save 路径设置为特定于该站点的目录。

您可以在以下位置看到结果https://dev.permaculture.org.nz/info1.php(问题解决后将被移动或删除)。

但是,当尝试将会话文件写入 /var/lib/php/session 时,我仍然收到权限被拒绝的错误。首先,我不明白为什么“Master”和“local”值不是反过来的。其次,我不知道 session.save.path 的“local”值来自哪里:我在服务器上找到了三个 php.ini 文件:/etc/php.ini /opt/remi/php56/root/etc/php.ini /var/www/dev.permaculture.org.nz/etc/php.ini

第二个使用 /tmp,并且我还将第一个设置为 /tmp 第三个指定 /var/www/dev.permaculture.org.nz/php/session - 根据要求,它由进程所有者拥有。

这些错误导致 phpmyadmin 出现致命错误。

答案1

经过进一步研究后解决了(https://stackoverflow.com/questions/19520744/本地值与主值之间的区别是什么

覆盖设置位于 /etc/httpd/conf.d/php.conf 中,虽然其中有注释说它被各个虚拟主机指令覆盖,但似乎 php.ini 设置并未覆盖。当我将其注释掉后,问题就消失了。

答案2

首先,您的安装(centos 6?)看起来真的很混乱。

您真的需要安装 3 个 php 吗?

  • 基本系统 php 5.6.27,这似乎是默认使用的(来自您的 phpinfo)=> /etc/php.ini
  • /opt/remi/php56/root/etc/php.ini 中的 SCL 包
  • 从 /var/www/dev.permaculture.org.nz/etc/php.ini 中的源构建

您读过 php.ini 中的注释吗?

; RPM note : session directory must be owned by process owner
; for mod_php, see /etc/httpd/conf.d/php.conf
; for php-fpm, see /etc/php-fpm.d/*conf

/etc/httpd/conf.d/php.conf 是为“apache”用户设置会话路径的正确位置,/etc/php.ini 是最糟糕的,因为由所有用户共享,这只能引发权限问题(会话由 1 个用户创建,由另一个用户清理)

相关内容