【问题标题】:PHP session.save_path ignoredPHP session.save_path 被忽略
【发布时间】:2016-10-07 12:44:18
【问题描述】:

我的 PHP 网站 (SuiteCRM) 出现问题,无法登录用户,我发现这是由于无法在会话目录上写入。

我可以通过创建目录 /tmp/php_sessions 并为 Apache 用户 www-data 授予其写入权限来修复它。当用户登录时,我看到目录中填充了文件。

但是,Ubuntu Xenial 会在重新启动时删除我的整个 tmp 目录,所以我每次都必须重做一遍。我决定将我的save_path 移到别处。

更改我的 php.ini 文件中的内容并重新启动 Apache 后,我可以通过运行这个简单的脚本来检查它们是否有效:

<?php
   echo ini_get("session.save_path");

   phpinfo();
?>

这向我显示了对新路径的双重确认,首先回显/var/tmp/php_sessions,然后在所有phpinfo 信息的中间,显示与Local ValueMaster value 指令session.save_path 相同的值。

但是php使用的目录还是第一个,/tmp/php_sessions!我的设置似乎被忽略了。

我是否忽略了什么?那个古老的环境可以埋在哪里?或者我怎样才能使新的有效?

(附注 - 我没有像在另一个类似的 SO 问题中那样使用 redis 处理程序)

【问题讨论】:

  • 您是否有权编辑您的php.ini 文件?
  • 是否手动设置了会话路径
  • 尝试使用此代码手动添加会话路径 ini_set(session.save_path, '/path/to/your/folder') ,将此代码放在 &lt;?php 之后,然后使用 session_start() 开始会话
  • @VigneshChinnaiyan 我试过了,没用,结果一样。但是,您的评论使我走上了正轨,我能够解决问题。我将在几分钟后将其发布为答案。非常感谢!

标签: php apache session


【解决方案1】:

好的,我自己的问题解决了,一般答案如下:

还有两件事可以改变路径,需要检查,

  1. 应用程序的 PHP 代码可能正在更改 ini 指令,请在代码中搜索 ini_set(session.save_path

  2. PHP 代码可能正在使用session_save_path PHP 命令覆盖ini。也可以搜索代码(注意两个下划线_!)

对于我的情况,具体答案是 SuiteCRM 使用 session_save_path 命令设置其路径,其值来自在 Web 根目录中找到的文件 config.php。那是我找到旧设置的地方,并且更改它解决了我的问题(我希望这是好的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2011-12-28
    • 1970-01-01
    • 2023-03-18
    • 2019-11-26
    • 2013-02-18
    相关资源
    最近更新 更多