首页 > 解决方案 > AWS EC2 PHP:无法设置会话值,但正在生成会话 ID

问题描述

我在 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 文件,在此处输入图像描述

找了两天,没有成功。请任何帮助,在此先感谢。

标签: phpamazon-web-servicescodeignitersessionamazon-ec2

解决方案


检查会话的权限。我有同样的问题,并通过更改 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 配置。我可以用“#”注释最后一行并重新启动服务器,一切都再次按预期工作。

希望这有帮助。


推荐阅读