Symptoms
-
Domain with WHMCS shows error:
The PHP session save path /var/lib/php/session is not writable. Please investigate the session.save_path PHP setting or contact your system administrator.
Warning: session_start(): open(C:WindowsTempsess_udfqa0si9tsg9i89dhene7ms78, O_RDWR) failed: Permission denied (13) in C:inetpubvhostsexample.comincludesconnect.php on line 2
-
Permissions for the folder mentioned in the error are correct:
# ls -la /var/lib/php/
...
drwx-wx-wt 2 root root 4096 Nov 15 23:36 session
C:> UsersAdministrator>icacls C:WindowsTemp
C:WindowsTemp NT AUTHORITYNETWORK SERVICE:(CI)(RX,D,WD,AD)
HOSTNAMEPP_WPG:(CI)(RX)
HOSTNAMEpsaserv:(CI)(RX)
HOSTNAMEpsacln:(CI)(RX)
HOSTNAMEpsaadm:(CI)(RX)
HOSTNAMEpsaadm:(OI)(IO)(R)
BUILTINUsers:(CI)(S,WD,AD,X)
BUILTINIIS_IUSRS:(OI)(CI)(S,RD)
CREATOR OWNER:(OI)(CI)(IO)(F)
NT AUTHORITYSYSTEM:(OI)(CI)(F)
BUILTINAdministrators:(OI)(CI)(F)
Cause
Subscription system user directory for sessions is not created or it is not set in the session.save_path PHP settings.
Resolution
Note: in case there is no WHMCS installed on the same server, refer to the following article: Website hosted in Plesk displayed incorrectly or showing the PHP warning: Failed to read session data: files
It is required to create a special directory for the PHP sessions. It is possible to do it via SSH (for Linux) or via Plesk UI (for both Linux and Windows).
Using Plesk Interface
-
Open File Manager under Domains > example.com.
-
Click New and choose Create directory.
-
Specify some name for the folder in this case we call it phpsessions.
-
Go to the PHP-Settings under Domains > example.com.
-
Change the setting session.save_path to the total path of a created folder:
/var/www/vhosts/example.com/phpsessions
C:inetpubvhostsexample.comhttpdocsphpsessions
Using SSH
-
Connect to the server using SSH;
-
Execute the following commands, instead of example, insert subscription system user name:
# mkdir -p /home/example/whmcsdata/sessions
# chmod 1750 /h /home/example/whmcsdata/sessions
# chown example:psacln /home/example/whmcsdata/sessions -
Log into Plesk;
-
Navigate to Domains > example.com > PHP settings;
-
Set the following directives, for example (for PHP 7.0) and click OK to apply the change:
include_path: ":/opt/plesk/php/7.0/share/pear:/home/example/whmcsdata/sessions"
session.save_path: ":/home/example/whmcsdata/sessions"
open_basedir: ":{WEBSPACEROOT}{/}{:}{TMP}{/}:/home/example/whmcsdata/sessions"