【问题标题】:AWS EC2 PHP : Unable to set the session value, but session id is generatingAWS EC2 PHP:无法设置会话值,但正在生成会话 ID
【发布时间】:2019-03-30 06:28:56
【问题描述】:

我在 AWS EC2 中托管了我的代码点火器应用程序。在那个会话中没有在我的登录过程中设置值。在 php.ini 文件中,我将会话保存路径设置为/tmp

session.save_path = '/tmp'

会话已启动,会话 ID 正在生成。但是会话值没有存储。我打印了$_SESSION 和会话ID,下面是输出。

string(26) "038vbmtjecvkqft02ou813qvo1" array(1) { ["__ci_last_regenerate"]=> int(1540479344) }

我的会话代码如下,

$this->session->set_userdata('frontusername', $res->Email);
$this->session->set_userdata('frontname', $res->FirstName);
$this->session->set_userdata('frontuserid', $res->Id);

它在我的另一台服务器上运行良好,但在 AWS EC2 中却不行。 设置保存路径后重新启动apache并检查/var/log下的错误日志。没有错误。 /tmp 文件夹也是可写的。

我的 php.ini 文件,

搜索前两天,没有运气。请任何帮助,在此先感谢。

【问题讨论】:

  • 那么$_SESSION 是如何打印值的?
  • 您使用的是哪个版本的 PHP?
  • 您能告诉我们您在$this->session 中用于会话处理的类的源代码吗?
  • @vivek_23,是的,$_SESSION 只打印 __ci_last_regenerate,而不是我的值
  • 我在 ec2 中使用 php 7,在我的另一台服务器中使用 php 5。有什么相关的吗?

标签: php amazon-web-services codeigniter session amazon-ec2


【解决方案1】:

检查会话权限。 我遇到了同样的问题,并通过更改 ami 中的权限解决了它。

指向 /var/lib/php/session 的本地值似乎是问题所在,因为服务器用户不可写入此目录。我对本地值和主值一无所知,在谷歌中进行了一些挖掘后,我阅读了以下内容:

“主值”(来自 php.ini)可以在 httpd.conf、.htaccess 或其他带有 php_value 指令的 Apache 配置中被“本地值”覆盖。

所以在查看服务器文件后,我发现 /etc/httpd/conf.d/php.conf 包含:

#
Apache specific PHP configuration options
those can be override in each configured vhost
#
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"

那么问题来了,这个 php.conf 覆盖了默认的 php.ini 配置。我可以用“#”注释最后一行并重新启动服务器,一切都会再次按预期工作。

希望对您有所帮助。

【讨论】:

  • 你指的是哪个权限?请问你能扩展这个答案吗?
  • ami是亚马逊机器镜像的意思吗?如何更改会话的权限?
  • 解释。希望回答有帮助
  • 已经试过了。服务器中没有 /etc/httpd/conf.d/php.conf 或 php.conf 这样的路径。
  • 你确定会话是用 session_start() 在文件的开头开始的吗?
猜你喜欢
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
  • 2017-01-06
  • 2012-07-21
相关资源
最近更新 更多