php - 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 文件夹也是可写的。
找了两天,没有成功。请任何帮助,在此先感谢。
解决方案
检查会话的权限。我有同样的问题,并通过更改 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 配置。我可以用“#”注释最后一行并重新启动服务器,一切都再次按预期工作。
希望这有帮助。
推荐阅读
- php - FireFox https 在 30 秒后超时
- laravel - 我正在使用 000webhost 部署 laravel,但出现错误
- node.js - 在反应 npm install 中的参数列表错误后丢失)
- css - 来自一个 Web 组件的样式用于所有实例
- c# - ASP.NET CORE 3.1 ajax post 调用方法但未收到值
- javascript - 在javascript中导入没有模块脚本类型的url
- rust - 如何解决 rust 中缺少抽象类的问题?
- python - pip/setuptools 控制台脚本可以将 python 选项传递给 python 本身吗?
- javascript - 我被困在 gamelab code.org 中创建以下代码
- powerbi - 如何使用 DAX 而不是快速测量从行总数中计算百分比