簡體   English   中英

PHP會話未保存在memcache中

[英]PHP sessions not being saved in 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

我可以從框中telnet到端點和端口並正確連接,因此實例可以連接到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中刪除這些值修復了問題。

這兩個主要的memcache PHP PECL擴展都有會話處理程序。 要么在使用前要求您安裝PECL模塊。

Memcache PECL擴展會話處理程序在php.ini中啟用以下內容:

session.save_handler = "memcache"
session.save_path = "tcp://memcacheServerAddressHere:11211?persistent=1&weight=2&timeout=2&retry_interval=10"

Memcached PECL擴展會話處理程序在php.ini中啟用以下內容:

session.save_handler = "memcached"
session.save_path = "memcacheServerAddressHere:11211"

請注意,Memcache擴展似乎允許更多配置Memcache環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM