AWS EC2 PHP:无法设置会话值,但是正在生成会话ID

时间:2018-10-25 15:14:21

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

我已在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中却无法正常工作。 设置保存路径并检查/ var / log下的错误日志后,已经重新标记了Apache。没错 / tmp文件夹也是可写的。

我的php.ini文件enter image description here

搜索过去两天,没有运气。请提供任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

因此,在浏览服务器文件后,我发现了/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配置。我可以用“#”注释最后一行,然后重新启动服务器,一切都将再次按预期工作。

希望获得帮助。