PHP session.save_path被忽略

时间:2016-10-07 12:44:19

标签: php apache session

我的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!似乎我的设置被忽略了。

我忽略了什么吗?那个古老的环境可以埋葬在哪里?或者我如何使新的有效?

(P.S。 - 我没有像其他类似的SO问题那样使用redis处理程序)

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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