Мой веб-сайт не будет правильно сохранять сеансы PHP, Я изначально писал об этом в SO, но это все больше похоже на проблему с сервером. Итак, я подумал, что перефразирую вопрос здесь.
Почему бы эта конфигурация сервера PHP не удается сохранить и получить сеансы?
Похоже, что одним из ключевых симптомов является то, что PHP не создает никаких файлов в /var/lib/php/session
. Вот текущие разрешения от сервера:
$ ls -al /var/lib/php/session/
total 28
drwxrwx--- 2 root apache 24576 Jul 20 13:30 .
drwxr-xr-x 3 root root 4096 Jul 20 13:30 ..
Вот несколько тестовых URL-адресов. Эта первая ссылка создает массив сеанса и распечатывает вывод, вторая просто выводит вывод сеанса, но, к сожалению, он пуст.
http://barbadospropertylist.com/wp-content/plugins/gravitymeta/test.php?name=value
http://barbadospropertylist.com/wp-content/plugins/gravitymeta/test.php
Я вижу, вы используете nginx и порт 7080 для apache.
Если когда-либо ваша архитектура включает в себя несколько серверов apache и какую-то балансировку нагрузки, вы должны сделать что-то для сеансов, которые будут совместно использоваться на нескольких серверах apache (memcached, умная балансировка нагрузки, nfs, mysql, ...).
Редактировать # 1
IMHO, поскольку у вас только один веб-сервер, сейчас нет причин пытаться использовать memcached для хранения сессий.
В какой-то момент вам удалось настроить php для использования файлов для хранения сеансов, но файлы сеансов не были эффективно записаны / var / lib / php / session
Вот почему вы теряете сессию, когда перепрыгиваете с одной страницы на другую.
Разрешения / var / lib / php / session обычно хороши, и сеансы работают без изменений в большинстве дистрибутивов linux и bsd.
Чтобы проверить правильность разрешений, сделайте следующее:
Шаг 1. Убедитесь, что php настроен для записи в / var / lib / php / session, используя ваш URL-адрес, который вызывает phpinfo (). У вас должно получиться что-то вроде:
Registered save handlers => files user
session.save_path => /var/lib/php/session
Шаг 2: проверьте, под каким пользователем запущен apache, с помощью ps и просмотрев файлы конфигурации.
Вы должны получить apache, www, www-data или http.
шаг 3 :
Убедитесь, что у пользователя apache есть доступ на запись к пути сеанса. Это можно сделать, набрав ls -ld / var; ls -ld / var / lib; ls -ld / var / php; ls -ld var / lib / php / session
или путем эффективного создания файла с пользователем apache
su - www -s / bin / bash или su -m www
затем
сенсорный / var / lib / php / сессия / тест
Если проблема не в разрешении, мы можем попробовать другие вещи