Sessions PHP ne sont pas enregistrés dans memcache
L'exécution d'une application à l'aide de php 5.4 sur AWS en utilisant Amazon Linux.
La version de PHP PHP 5.4.28.
memcache lib installé à partir d'AWS repo est php54-pecl-memcache-3.0.8-1.11.amzn1.x86_64
J'ai vérifié que php est l'utilisation de /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
Le réglage de montrer que je devrais utiliser 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
Je peux telnet à partir de la boîte à la fin des point & port et de connecter correctement, de sorte que l'instance est en mesure de se connecter au serveur memcache.
Choses que nous avons essayé:
- J'ai enlevé la tcp://à partir de php.fichier ini, et qui ne fait pas de différence - les séances sont toujours enregistrés dans des fichiers.
- Nous avons changé de session.save_handler="memcache" à la session.save_handler="memcached"
- chaque fois que nous faisons un changement, nous nous arrêtons le serveur httpd, et puis commencer à nouveau
- nous avons même essayé de redémarrer les serveurs
Indépendamment de ce que nous avons essayé, les sessions sont stockées sur le disque dans le répertoire /var/lib/php/sessions.
Il y a une chose qui me manque, ou est-ce un connu 5.4 ou AWS problème?
memcached
en tant que gestionnaire au lieu de memcache
?Non, c'est l'héritage de code et utilise memcache pour db caches.
PHP 5.4.29 n'est pas l'héritage. Il suffit d'installer memcached module et lui donner un essai. Cela n'affectera pas votre code PHP de toute façon. Btw, avez-vous redémarré PHP (serveur si c'est un module ou le fpm si c'est fcgi) ?
Non, notre code qui utilise la memcache lib est l'héritage, et ne serait pas facile à mettre à jour de memcached. J'ai essayer de configurer simplement les sessions en php.ini pour utiliser memcached lib, et qui n'a pas changer quoi que ce soit. Et nous sommes arrêt et le démarrage du serveur web, et même essayé de redémarrer les serveurs - rien n'a changé.
juste pour avoir disparu au cours de la novice trucs: êtes-vous journalisation des erreurs de démarrage, peut-être de les afficher (display_startup_errors) et sont vous la vérification de votre error_log ?
OriginalL'auteur chris | 2014-06-12
Vous devez vous connecter pour publier un commentaire.
OK, nous avons réussi à comprendre le problème.
Tout d'abord, nous avons créé une page simple qui crachent de la fonction phpinfo(). Notez qu'il est important que vous exécutez ce à travers le serveur web exécute le php, je NE comprend PAS les remplacements qu'apache peut ajouter.
En vertu de la session, la section de sortie des listes de toutes les directives, et un Local "Valeur" et un "Maître de la Valeur".
Les valeurs locales:
tandis que le maître valeurs:
Il s'avère qu'il y a une substitution installé par défaut dans /etc/httpd/conf.d/php.conf qui spécifie les fichiers. Cela semble être une Redhat/CentOS/Fedora chose.
La suppression de ces valeurs à partir de php.conf résolu le problème.
phpinfo()
. Seulement j'ai été de deviner votre configuration serait pointant vers un autre php.ini. Donc le php.fichier conf de remplacer uniquement le paramètre de session ou avait-il point à un autre php.fichier ini?la php.conf remplace les paramètres de php.ini, mais seulement pour l'exécution de php par le serveur web. C'est pourquoi nous ne voyons pas en cours d'exécution php -je.
Absolument génial homme, je devenais fou avec cela, je suis en utilisant CentOs7 et je peux confirmer qu'il y a un remplacement en php.conf.
OriginalL'auteur chris
Deux grands memcache PHP extensions PECL ont les gestionnaires de session. Soit vous demandera d'installer un module PECL avant de l'utiliser.
La Memcache extension PECL gestionnaire de session est activée avec les suivants en php.ini:
La Memcached extension PECL gestionnaire de session est activée avec les suivants en php.ini:
Noter que l'extension Memcache s'affiche pour permettre à plus de la configuration de la Memcache environnement.
Essayez d'utiliser l'url de connexion sans "tcp://" de la session.save_path => <elasicache-endpoint>:11211?persistant=1&poids=1&timeout=1&intervalle_avant_nouvelle_tentative=15 => <elasticache-endpoint>:11211?persistant=1&poids=1&timeout=1&intervalle_avant_nouvelle_tentative=15
Mise à jour de la question - nous avons essayé de cela, et il ne fait aucune différence.
Essayez de changer de "memcache" à "memcached" dans le php.ini comme ceci : session.save_handler = "memcached"
OriginalL'auteur user3733902