Fixing session_start(): Permission Denied (13) in XAMPP — System Administrator's Guide
What Does This Error Mean?
The error occurs when PHP cannot access the session storage directory (/applications/xampp/xamppfiles/temp/) due to permission issues, incorrect ownership, or configuration errors.
For related session_start permission topics, see Fixing session_start() failed: Permission denied (13), Failed to Read Session Data (read-side), and XAMPP — SELinux/AppArmor restrictions variant.
Common Causes:
- Incorrect permissions on the session directory (
/applications/xampp/xamppfiles/temp/). - Wrong ownership (Apache/Nginx cannot write session files).
- Misconfigured php.ini session path.
- Session directory missing or corrupt session files.
- SELinux or security restrictions preventing access (Linux/macOS).
Find the PHP Session Directory
Check PHP Session Path in XAMPP
Run:
php -i | grep "session.save_path"
Expected output:
session.save_path => /applications/xampp/xamppfiles/temp
If the session path is empty, it means PHP is using the system's default temporary folder (/tmp).
Ensure the Session Directory Exists
If the session directory is missing, create it.
sudo mkdir -p /applications/xampp/xamppfiles/temp
Fix Directory Permissions
Grant Read/Write Permissions to the Web Server
Set correct permissions so Apache/Nginx can write session files:
sudo chmod -R 770 /applications/xampp/xamppfiles/temp
Set Correct Ownership
For Apache (default user daemon on macOS XAMPP):
sudo chown -R daemon:daemon /applications/xampp/xamppfiles/temp
For Linux (Ubuntu/Debian/Arch), if running XAMPP manually:
sudo chown -R www-data:www-data /applications/xampp/xamppfiles/temp
Restart XAMPP and test again:
sudo /Applications/XAMPP/xampp restart
Verify php.ini Configuration
If PHP is using the wrong session path, update php.ini.
Locate php.ini in XAMPP
For macOS:
sudo nano /Applications/XAMPP/xamppfiles/etc/php.ini
For Linux:
sudo nano /opt/lampp/etc/php.ini
Update Session Settings
Find and modify:
session.save_handler = files
session.save_path = "/applications/xampp/xamppfiles/temp"
session.gc_maxlifetime = 3600
session.use_strict_mode = 1
session.cookie_secure = 0
If /applications/xampp/xamppfiles/temp is restricted, use /tmp/php_sessions instead.
Restart XAMPP
sudo /Applications/XAMPP/xampp restart
Clear Old or Corrupt Session Files
Corrupt session files can prevent new ones from being created.
sudo rm -rf /applications/xampp/xamppfiles/temp/*
Try running the session script again.
Debug with Error Logs
If the problem persists, check logs.
Check XAMPP Logs
sudo tail -f /Applications/XAMPP/logs/php_error_log
Check Apache Logs
sudo tail -f /Applications/XAMPP/logs/error_log
Summary of Fixes
| Issue | Fix |
|---|---|
| Session directory missing | mkdir -p /applications/xampp/xamppfiles/temp |
| Incorrect folder permissions | chmod -R 770 /applications/xampp/xamppfiles/temp |
| Wrong ownership | chown -R daemon:daemon /applications/xampp/xamppfiles/temp |
| Misconfigured php.ini | Update session.save_path |
| Corrupt session files | rm -rf /applications/xampp/xamppfiles/temp/* |
By following these systematic fixes, you can resolve session_start() permission errors in XAMPP and restore PHP session functionality.


