PHP会话未保存在memcache中

使用Amazon Linux在AWS上使用PHP 5.4运行应用程序.

PHP版本是PHP 5.4.28.
从AWS repo安装的memcache lib是PHP54-pecl-memcache-3.0.8-1.11.amzn1.x86_64

我已经验证PHP正在使用/etc/PHP.ini:

[root@ip-xx.xx.xx.xx]# PHP -i | grep Config
Configuration File (PHP.ini) Path => /etc
Loaded Configuration File => /etc/PHP.ini

设置显示我应该使用memcache:

[root@ip-10-40-17-119 etc]# grep "^session.save" PHP.ini
session.save_handler="memcache"
session.save_path="tcp://<elasticache-endpoint>:11211"

[root@ip-10-40-17-119 PHP.d]# PHP -i | grep session.save
session.save_handler => memcache => memcache
session.save_path => tcp://<elasicache-endpoint>:11211?persistent=1&weight=1&timeout=1&retry_interval=15 => tcp://<elasticache-endpoint>:11211?persistent=1&weight=1&timeout=1&retry_interval=15

我可以从盒子到终点&端口并正确连接,因此实例能够连接到memcached服务器.

我们尝试过的事情:

>我已从PHP.ini文件删除了tcp://,这没有任何区别 – 会话仍然保存在文件中.
>我们已从session.save_handler =“memcache”更改为session.save_handler =“memcached”
>每次我们进行更改时,我们都会停止httpd服务器,然后再次启动它
>我们甚至尝试重启服务器

无论我们尝试过什么,会话都存储在磁盘上/ var / lib / PHP / sessions中.
是否有我遗漏的东西,或者这是一个已知的5.4或AWS问题?

好的,我们设法解决了这个问题.

首先,我们创建了一个吐出PHPinfo()的简单页面.请注意,通过Web服务器运行它是很重要的 – 运行PHP -i不包括apache可能添加的任何覆盖.

在会话部分下,输出列出了所有指令,以及“本地值”和“主值”.

当地的价值观有:

session.save_handler    files
session.save_path   /var/lib/PHP/session

而主要价值观有:

session.save_handler    memcache
session.save_path   tcp://<endpoint>:11211

事实证明,在/etc/httpd/conf.d/PHP.conf中默认安装了一个指定文件的覆盖.这似乎是一个Redhat / CentOS / Fedora的东西.

PHP.conf中删除这些值修复了问题.

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...