Назад | Перейти на главную страницу

Как хранить сеансы php с использованием memcached и unix socket

Я запускаю Arch linux с systemd, nginx и php с php-fpm. Я пытаюсь (и не могу) настроить memcached для хранения сеансов с использованием сокета unix. У меня установлен и активен memcached, однако я не могу отключить сеть. Я добавил следующую строку в /etc/conf.d/memcached

MEMCACHED_ARGS="-s unix:///tmp/memcached.sock -a 666"

Я также пробовал:

MEMCACHED_ARGS="-s /tmp/memcached.sock -a 666"
MEMCACHED_ARGS="-s unix:/tmp/memcached.sock -a 666"

когда я перезапускаю memcached, я всегда получаю:

memcached.service - Memcached Daemon
          Loaded: loaded (/usr/lib/systemd/system/memcached.service; enabled)
          Active: active (running) since Sat 2013-01-19 17:41:15 PST; 5min ago
        Main PID: 773 (memcached)
          CGroup: name=systemd:/system/memcached.service
                  └─773 /usr/bin/memcached -l 127.0.0.1

когда я запускаю php-скрипт с сессиями, журнал ошибок php показывает (что неудивительно):

[19-Jan-2013 16:46:45 America/Los_Angeles] PHP Warning:  Unknown: Failed to write session data (memcached). Please verify that the current setting of session.save_path is correct (unix:/tmp/memcached.sock) in Unknown on line 0

Я также установил пакет php-memcached, но я не знаю, что он делает и как его запустить. Я раскомментировал следующую строку в /etc/php/conf.d/memcached.ini:

extension=memcached.so

но это ничего не изменило.

Мы будем очень благодарны за любые идеи или предложения.

Memcached config.d

Путь к файлу - это все, что нужно для Unix-сокета Memcached.

MEMCACHED_ARGS="-s /tmp/memcached.sock -a 666"

Вы можете убедиться, что Memcached работает нормально, запустив stats через сокет unix.

bash $> echo stats | nc -U /tmp/memcached.sock
# returns list of server statistics

Настройте сеанс PHP для использования Memcached

редактировать php.ini, или /etc/php/conf.d/memcached.ini, и добавить поддержка сеанса.

extension=memcached.so
session.save_handler="memcached"
session.save_path="/tmp/memcached.sock"

Перезапустите службы и проверьте журналы php