Setting up a session save path in php » History » Revision 3
Revision 2 (Gareth Eaton, 09/20/2023 12:23 PM) → Revision 3/6 (Gareth Eaton, 10/12/2023 03:01 PM)
h1. Setting up a session save path in php I recently encountered an issue with Nextcloud where I kept experiencing unwanted logouts, leading to frustrating login loops. After some research and trial-and-error, I managed to find a solution that worked for me. After a few clicks in the Nextclouds Web interface, especially in the Files page, I get the message: *"Problem loading the page, reloading in 5 seconds"* After 5 seconds I am logged out and have to login again. Having a look into the log-file there you can find the following entry: *"app":"no app in context","message":"Current user is not logged in"* | *Note* I've discovered that you may need to create the 'tmp' directory within the Nextcloud folder at '/var/www/html/nextcloud'. This can cause issues during updates as it may flag the directory. In such cases, you'll have to remove it and reinstall it later. To avoid this problem, you can install Nextcloud in the '/var' directory. While this usually works, there have been instances where it didn't work for me. | Solution: The solution involves configuring the php.ini file, which controls how PHP handles various settings on the server. Specifically, I focused on the session.save_path setting, which determines where PHP stores temporary session data for user logins. | Create a Temporary Directory: If you're setting up Nextcloud in the '/var/' directory, you can likely skip this step. However, if you're installing it in the Nextcloud directory, you'll need to create a new folder. To do this, I initially established a fresh directory called 'tmp' within my Nextcloud installation path, which in my case was '/var/www/html/nextcloud.' This 'tmp' directory serves as the location where PHP stores temporary session data. | Create the "tmp" Directory: You can use the mkdir command to create the "tmp" directory in the /var directory. Open your terminal and run: <pre> sudo mkdir /var/tmp-session /var/tmp </pre> This will create the "tmp-session" "tmp" directory within /var. Set Permissions: Set the correct permissions for the "tmp-session" "tmp" directory using chmod 750: <pre> sudo chmod 750 /var/tmp-session /var/tmp </pre> This ensures that the directory is readable, writable, and executable by the owner (root) and the group. <pre> sudo chown www-data:www-data /var/tmp-session </pre> The command sudo chown www-data:www-data /var/tmp-session changes the ownership of the directory /var/tmp-session to the user and group www-data. Configure php.ini: Open the php.ini file for editing: <pre> sudo nano /etc/php/<version>/apache2/php.ini </pre> Replace <version> with the PHP version you're using. For example: <pre> sudo nano /etc/php/8.1/apache2/php.ini </pre> Find the session.save_path directive and update it to use the new "/var/tmp" directory: <pre> session.save_path = "/var/tmp-session" "/var/tmp" </pre> Save your changes and exit the text editor. Restart Apache Web Server: Finally, restart the Apache web server to apply the changes to the PHP configuration: <pre> sudo service apache2 restart </pre> Why This Works: The unwanted logouts and login loops were likely caused by issues with session management. By creating a custom temporary directory and configuring PHP's session.save_path to use it, I ensured that session data was stored reliably. This prevents Nextcloud from losing track of my authentication status, thus stopping the annoying logouts and loops.