Project

General

Profile

Setting up a session save path in php » History » Version 4

Gareth Eaton, 10/12/2023 03:05 PM

1 1 Gareth Eaton
h1. Setting up a session save path in php
2
3
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.
4
5
6
After a few clicks in the Nextclouds Web interface, especially in the Files page, I get the message:
7
8
*"Problem loading the page, reloading in 5 seconds"*
9
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:
10
11
*"app":"no app in context","message":"Current user is not logged in"*
12
13
14 4 Gareth Eaton
| *Note* I've installing the 'tmp' directory within the Nextcloud folder at '/var/www/html/nextcloud'.
15
 can cause issues during updates as it may flag the directory. 
16
17
So install it in the /var/ that way you do not have to remove it and reinstall it later, when updating Nextcloud, 
18
 |
19 2 Gareth Eaton
20
21
22 1 Gareth Eaton
Solution:
23
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.
24
25 2 Gareth Eaton
| Create a Temporary Directory:
26
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. |
27
28
29 1 Gareth Eaton
30
31
Create the "tmp" Directory:
32
33
You can use the mkdir command to create the "tmp" directory in the /var directory. Open your terminal and run:
34
35
36
<pre>
37 3 Gareth Eaton
sudo mkdir /var/tmp-session
38 1 Gareth Eaton
</pre>
39
40 3 Gareth Eaton
This will create the "tmp-session" directory within /var.
41 1 Gareth Eaton
42
Set Permissions:
43
44 3 Gareth Eaton
Set the correct permissions for the "tmp-session" directory using chmod 750:
45 1 Gareth Eaton
46
47
<pre>
48 3 Gareth Eaton
sudo chmod 750 /var/tmp-session
49 1 Gareth Eaton
</pre>
50
51
This ensures that the directory is readable, writable, and executable by the owner (root) and the group.
52
53 3 Gareth Eaton
<pre>
54
sudo chown www-data:www-data /var/tmp-session
55
</pre>
56
57
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. 
58
59
60 1 Gareth Eaton
Configure php.ini:
61
62
Open the php.ini file for editing:
63
64
65
<pre>
66
sudo nano /etc/php/<version>/apache2/php.ini
67
</pre>
68
69
Replace <version> with the PHP version you're using. For example:
70
71
<pre>
72
sudo nano /etc/php/8.1/apache2/php.ini
73
</pre>
74
75
Find the session.save_path directive and update it to use the new "/var/tmp" directory:
76
77
78
<pre>
79 3 Gareth Eaton
session.save_path = "/var/tmp-session"
80 1 Gareth Eaton
</pre>
81
82
Save your changes and exit the text editor.
83
84
Restart Apache Web Server:
85
86
Finally, restart the Apache web server to apply the changes to the PHP configuration:
87
88
89
<pre>
90
sudo service apache2 restart
91
</pre>
92
93
94
Why This Works:
95
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.