Permission Denied Fehler
Datei- und Verzeichnisberechtigungsprobleme sind häufig in XOOPS-Installationen, besonders nach dem Upload oder Server-Migration. Dieser Leitfaden hilft Ihnen, Berechtigungsprobleme zu diagnostizieren und zu beheben.
Grundlagen von Linux/Unix-Berechtigungen
Abschnitt betitelt „Grundlagen von Linux/Unix-Berechtigungen“Datei-Berechtigungen werden als dreistellige Codes dargestellt:
Abschnitt betitelt „Datei-Berechtigungen werden als dreistellige Codes dargestellt:“rwxrwxrwx||| ||| |||||| ||| +-- Others (world)||| +------ Group+--------- Owner
r = read (4)w = write (2)x = execute (1)
755 = rwxr-xr-x (owner full, group read/execute, others read/execute)644 = rw-r--r-- (owner read/write, group read, others read)777 = rwxrwxrwx (everyone full access - NOT RECOMMENDED)Häufige Berechtigungsfehler
Abschnitt betitelt „Häufige Berechtigungsfehler“”Permission denied” beim Upload
Abschnitt betitelt „”Permission denied” beim Upload“Warning: fopen(/var/www/html/xoops/uploads/file.jpg): failed to open stream:Permission denied in /var/www/html/xoops/class/file.php on line 42”Unable to write file"
Abschnitt betitelt „”Unable to write file"“Error: Unable to write file to /var/www/html/xoops/cache/"Cannot create directory”
Abschnitt betitelt „"Cannot create directory”“Error: mkdir(/var/www/html/xoops/uploads/temp/): Permission deniedKritische XOOPS-Verzeichnisse
Abschnitt betitelt „Kritische XOOPS-Verzeichnisse“Verzeichnisse mit Schreib-Berechtigungen erforderlich
Abschnitt betitelt „Verzeichnisse mit Schreib-Berechtigungen erforderlich“| Verzeichnis | Minimum | Zweck |
|---|---|---|
/uploads | 755 | Benutzer-Uploads |
/cache | 755 | Cache-Dateien |
/templates_c | 755 | Kompilierte Templates |
/var | 755 | Variable Daten |
mainfile.php | 644 | Konfiguration (lesbar) |
Linux/Unix-Fehlerbehebung
Abschnitt betitelt „Linux/Unix-Fehlerbehebung“Schritt 1: Überprüfen Sie die aktuellen Berechtigungen
Abschnitt betitelt „Schritt 1: Überprüfen Sie die aktuellen Berechtigungen“# Check file permissionsls -l /var/www/html/xoops/
# Check specific filels -l /var/www/html/xoops/mainfile.php
# Check directory permissionsls -ld /var/www/html/xoops/uploads/Schritt 2: Identifizieren Sie den Webserver-Benutzer
Abschnitt betitelt „Schritt 2: Identifizieren Sie den Webserver-Benutzer“# Check Apache userps aux | grep -E '[a]pache|[h]ttpd'# Usually: www-data (Debian/Ubuntu) or apache (RedHat/CentOS)
# Check Nginx userps aux | grep -E '[n]ginx'# Usually: www-data or nginxSchritt 3: Reparieren Sie die Eigentumsschaft
Abschnitt betitelt „Schritt 3: Reparieren Sie die Eigentumsschaft“# Set correct ownership (assuming www-data user)sudo chown -R www-data:www-data /var/www/html/xoops/
# Fix only web-writable directoriessudo chown www-data:www-data /var/www/html/xoops/uploads/sudo chown www-data:www-data /var/www/html/xoops/cache/sudo chown www-data:www-data /var/www/html/xoops/templates_c/sudo chown www-data:www-data /var/www/html/xoops/var/Schritt 4: Reparieren Sie die Berechtigungen
Abschnitt betitelt „Schritt 4: Reparieren Sie die Berechtigungen“Option A: Restriktive Berechtigungen (Empfohlen)
Abschnitt betitelt „Option A: Restriktive Berechtigungen (Empfohlen)“# All directories: 755 (rwxr-xr-x)find /var/www/html/xoops -type d -exec chmod 755 {} \;
# All files: 644 (rw-r--r--)find /var/www/html/xoops -type f -exec chmod 644 {} \;
# Except writable directorieschmod 755 /var/www/html/xoops/uploads/chmod 755 /var/www/html/xoops/cache/chmod 755 /var/www/html/xoops/templates_c/chmod 755 /var/www/html/xoops/var/Option B: All-in-one Skript
Abschnitt betitelt „Option B: All-in-one Skript“#!/bin/bashXOOPS_PATH="/var/www/html/xoops"WEB_USER="www-data"
echo "Fixing XOOPS permissions..."
# Set ownershipsudo chown -R $WEB_USER:$WEB_USER $XOOPS_PATH
# Set directory permissionsfind $XOOPS_PATH -type d -exec chmod 755 {} \;
# Set file permissionsfind $XOOPS_PATH -type f -exec chmod 644 {} \;
# Ensure writable directorieschmod 755 $XOOPS_PATH/uploads/chmod 755 $XOOPS_PATH/cache/chmod 755 $XOOPS_PATH/templates_c/chmod 755 $XOOPS_PATH/var/
echo "Done! Permissions fixed."Berechtigungsprobleme nach Verzeichnis
Abschnitt betitelt „Berechtigungsprobleme nach Verzeichnis“Uploads-Verzeichnis
Abschnitt betitelt „Uploads-Verzeichnis“Problem: Dateien können nicht hochgeladen werden
# Solutionsudo chown www-data:www-data /var/www/html/xoops/uploads/chmod 755 /var/www/html/xoops/uploads/find /var/www/html/xoops/uploads -type f -exec chmod 644 {} \;find /var/www/html/xoops/uploads -type d -exec chmod 755 {} \;Cache-Verzeichnis
Abschnitt betitelt „Cache-Verzeichnis“Problem: Cache-Dateien werden nicht geschrieben
# Solutionsudo chown www-data:www-data /var/www/html/xoops/cache/chmod 755 /var/www/html/xoops/cache/Templates-Cache
Abschnitt betitelt „Templates-Cache“Problem: Templates kompilieren nicht
# Solutionsudo chown www-data:www-data /var/www/html/xoops/templates_c/chmod 755 /var/www/html/xoops/templates_c/Windows-Fehlerbehebung
Abschnitt betitelt „Windows-Fehlerbehebung“Schritt 1: Überprüfen Sie die Dateieigenschaften
Abschnitt betitelt „Schritt 1: Überprüfen Sie die Dateieigenschaften“- Rechtsklick auf Datei → Eigenschaften
- Klicken Sie auf “Sicherheit”-Tab
- Klicken Sie auf “Bearbeiten”-Button
- Wählen Sie Benutzer und überprüfen Sie Berechtigungen
Schritt 2: Gewähren Sie Schreib-Berechtigungen
Abschnitt betitelt „Schritt 2: Gewähren Sie Schreib-Berechtigungen“Über GUI:
Abschnitt betitelt „Über GUI:“1. Rechtsklick auf Ordner → Eigenschaften2. Wählen Sie "Security"-Tab3. Klicken Sie "Edit"4. Wählen Sie "IIS_IUSRS" oder "NETWORK SERVICE"5. Überprüfen Sie "Modify" und "Write"6. Klicken Sie "Apply" und "OK"Über Befehlszeile (PowerShell):
Abschnitt betitelt „Über Befehlszeile (PowerShell):“# Run PowerShell as Administrator
# Grant IIS app pool permissions$path = "C:\inetpub\wwwroot\xoops\uploads"$acl = Get-Acl $path$rule = New-Object System.Security.AccessControl.FileSystemAccessRule( "IIS_IUSRS", "Modify", "ContainerInherit,ObjectInherit", "None", "Allow")$acl.SetAccessRule($rule)Set-Acl -Path $path -AclObject $aclPHP-Skript zur Überprüfung der Berechtigungen
Abschnitt betitelt „PHP-Skript zur Überprüfung der Berechtigungen“<?php$paths = [ XOOPS_ROOT_PATH . '/uploads' => 'uploads', XOOPS_ROOT_PATH . '/cache' => 'cache', XOOPS_ROOT_PATH . '/templates_c' => 'templates_c', XOOPS_ROOT_PATH . '/var' => 'var', XOOPS_ROOT_PATH . '/mainfile.php' => 'mainfile.php'];
echo "<h2>XOOPS Permission Check</h2>";echo "<table border='1'>";echo "<tr><th>Path</th><th>Readable</th><th>Writable</th></tr>";
foreach ($paths as $path => $name) { $readable = is_readable($path) ? 'YES' : 'NO'; $writable = is_writable($path) ? 'YES' : 'NO';
echo "<tr>"; echo "<td>$name</td>"; echo "<td style='background: " . ($readable === 'YES' ? 'green' : 'red') . "'>$readable</td>"; echo "<td style='background: " . ($writable === 'YES' ? 'green' : 'red') . "'>$writable</td>"; echo "</tr>";}
echo "</table>";?>Best-Practices
Abschnitt betitelt „Best-Practices“1. Principle of Least Privilege
Abschnitt betitelt „1. Principle of Least Privilege“# Only grant necessary permissions# Don't use 777 or 666
# Badchmod 777 /var/www/html/xoops/uploads/ # Dangerous!
# Goodchmod 755 /var/www/html/xoops/uploads/ # Secure2. Sichern Sie vor Änderungen
Abschnitt betitelt „2. Sichern Sie vor Änderungen“# Backup current stategetfacl -R /var/www/html/xoops > /tmp/xoops-acl-backup.txtSchnelle Referenz
Abschnitt betitelt „Schnelle Referenz“# Quick fix (Linux)sudo chown -R www-data:www-data /var/www/html/xoops/find /var/www/html/xoops -type d -exec chmod 755 {} \;find /var/www/html/xoops -type f -exec chmod 644 {} \;Verwandte Dokumentation
Abschnitt betitelt „Verwandte Dokumentation“- White-Screen-of-Death - Andere häufige Fehler
- Database-Connection-Errors - Datenbankprobleme
- ../../01-Getting-Started/Configuration/System-Settings - XOOPS-Konfiguration
Zuletzt aktualisiert: 2026-01-31 Gilt für: XOOPS 2.5.7+ OS: Linux, Windows, macOS