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

dsf9zpds  于 2022-12-07  发布在  PHP
关注(0)|答案(2)|浏览(127)

我已经在AWS EC2中托管了我的code igniter应用程序。在该会话中,没有在我的登录过程中设置值。在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文件,x1c 0d1x
最近两天一直在找,没找到。有什么需要帮忙的,先谢谢了。

rjee0c15

rjee0c151#

检查会话的权限。我遇到了同样的问题,并通过在ami中更改权限解决了它。
指向/var/lib/php/session的本地值似乎是问题所在,因为服务器用户无法写入该目录。我对本地值和主值一无所知,在谷歌上挖掘了一番后,我读到了以下内容:
“主值”(来自php.ini)可以在httpd.conf,.htaccess或其他Apache配置中用php_value指令用“本地值”覆盖。
因此,在浏览了服务器文件后,我找到了/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配置。我可以用“#”注解最后一行,然后重新启动服务器,一切都像预期的那样工作。
希望这能有所帮助。

tzcvj98z

tzcvj98z2#

请检查您正在与AWS集成的PHP版本以及代码按预期工作的本地版本。
我的代码在PHP 5.x上运行良好。AWS与PHP 7.x集成后,出现了此问题。
确保删除session_start();并将其添加到index.php文件的顶部。
以下步骤可解决该问题:
1.打开应用程序\库\会话\会话.php文件。
1.转到第281行和ini_set('session.name', $params['cookie_name']);ini_set('session.id', $params['cookie_name']);
1.转到第313行“安全为王”之后,注解以下部分:

// ini_set('session.use_trans_sid', 0);
 // ini_set('session.use_strict_mode', 1);
 // ini_set('session.use_cookies', 1);
 // ini_set('session.use_only_cookies', 1);
 // $this->_configure_sid_length();

希望这对你有用!

相关问题