我正在尝试通过AWS Elasticache将PHP7 $_SESSION['...']
信息(来自ElasticBeanstalk应用程序)存储在集中式Memcached群集中。
以下是我要采取的步骤:
sample
sample
下,使用以下内容创建.ebextensions/elasticcache-sessions.config
:
files:
"/etc/php.d/project.ini" :
mode: "000644"
owner: root
group: root
content: |
[Session]
session.save_handler = memcached
session.save_path = "tcp://dns-noted-from-step-4:11211"
仍在sample
下,使用以下内容创建index.php
:
header('Content-Type: text/plain');
session_start();
if(!isset($_SESSION['visit']))
{
echo "This is the first time you're visiting this server\n";
$_SESSION['visit'] = 0;
}
else
echo "Your number of visits: ".$_SESSION['visit'] . "\n";
$_SESSION['visit']++;
echo "Server IP: ".$_SERVER['SERVER_ADDR'] . "\n";
echo "Client IP: ".$_SERVER['REMOTE_ADDR'] . "\n";
print_r($_COOKIE);
将sample
目录压缩为.zip
文件并将其部署到步骤1中提到的Beanstalk应用程序
PHP Fatal error: session_start(): Failed to create session ID: memcached.
。如果我SSH到属于Beanstalk的EC2实例,我可以看到安装了PHP7。如果我php --ini | grep memcached
,则会有结果。我也能够验证我写的ebextension是否正在应用。准备好把头撞在墙上。感谢您的帮助。
答案 0 :(得分:2)
很长时间以来,我们都在碰壁时碰到了同样的问题。 我们发现Apache只是没有向Elasticache发出网络请求。
因此,深入研究SELinux,发现运行它可以解决此问题:
setsebool -P httpd_can_network_connect 1