Проблемы с php сессиями после обновления php-fpm на CentOS 7 (Nginx+php-fpm, phpList)

    После обновления на сервере (CentOS 7+Nginx+php-fpm+MySQL) версии PHP (7.3.13 на 7.3.14), phpList начал странно себя вести, а именно:

    - Логинимся в админку http://site.com/admin/

    - Нажимаем на любой пункт меню

    - Вылетаем на страницу http://site.com/admin/?page=logout&err=1

    Служба поддержки phpList предлагает следующие решения:

    Why does phpList ask me to login for every admin page I try to load?

    * This generally indicates that something is wrong with session handling in your PHP configuration. Check your php.ini file and make sure you have this set: session.use_cookies = 1, and/or ask your ISP to make sure sessions are enabled in your PHP configuration and are stored correctly.

    * The temporary directory on your server doesn't have read/write permissions. Please make sure that it does have read/write permissions.

    * The temporary directory has filled up with temporary files, and phpList is unable to write to it. You can fix this by cleaning up your temp dir.

    * You are connecting through multiple proxies and this means that your IP address isn't the same for every page request. (AOL is an example of an ISP that connects in this way.) You can solve this in config.php, by setting define("CHECK_SESSIONIP",0);

    * Alternatively, you can store sessions in the database instead of the default place by assigning a table name to this value. Enable this setting in config.php: $SessionTableName = "phplistsessions"; by uncommenting this line. The table will be created and will not use any prefixes. This only works when using mySQL and only for administrator sessions.

    В моём случае проблема была не в phpList, а в сессиях php, т.е. она будет проявляться и с другими скриптами/программами на PHP. Проблема связана с тем, что при обновлении PHP изменилась группа-владелец директорий /var/lib/php/* и у веб-сервера отсутствовали права на запись в /var/lib/php/session.

    ls -lh /var/lib/php/

    total 12K
    drwxrwx--- 2 root apache 4.0K Jan 21 15:35 opcache
    drwxrwx--- 2 root apache 4.0K Jan 23 18:19 session
    drwxrwx--- 2 root apache 4.0K Jan 21 15:35 wsdlcache

    В моей системе Apache не установлен, владельцем должна быть группа nginx, выполняем следующую команду:

    sudo chgrp nginx /var/lib/php/*

    ls -lh /var/lib/php/

    total 12K
    drwxrwx--- 2 root nginx 4.0K Jan 21 15:35 opcache
    drwxrwx--- 2 root nginx 4.0K Jan 23 18:19 session
    drwxrwx--- 2 root nginx 4.0K Jan 21 15:35 wsdlcache

    Группа-владелец изменилась. Проверяем phpList, всё работает нормально.

    Для Ubuntu/Debian группа, в которую входит учетная запись веб-сервера, будет не nginx, а www-data.

    P/S: В сети можно встретить рекомендации установить права 777 (полный доступ всем), выполнив команду:

    sudo chmod 777 /var/lib/php/*

    Работать конечно будет, но этот способ крайне небезопасен и, следовательно, неправильный.