# Projektbeschreibung

Dieses Projekt ist eine PHP-Webseite, die Schülerinnen und Schülern ermöglicht, Hausaufgaben und Übungsblätter herunterzuladen. Die Webseite ist unabhängig von einem bestimmten Webserver und kann mit jedem Server konfiguriert werden, der PHP unterstützt.

## Anforderungen

Um die Webseite auszuführen, benötigen Sie:

- **Webserver**: Jeder Webserver, der PHP unterstützt (z. B. Apache, Nginx, IIS).
- **PHP**: Version 7.4 oder höher.
- **Dateisystem**: Schreibzugriff auf das Verzeichnis, in dem die Webseite gehostet wird.

## Einrichtung

### 1. Projektdateien bereitstellen
- Extrahieren Sie die Projektdateien aus dem Ordner `webseite` aus dem bereitgestellten Archiv.
- Platzieren Sie die Dateien in einem Verzeichnis, das der Webserver bedienen kann.

### 2. PHP aktivieren

#### a) Apache
- Stellen Sie sicher, dass das Modul `mod_php` aktiviert ist.
- Überprüfen Sie die Apache-Konfigurationsdatei (z. B. `httpd.conf`), und stellen Sie sicher, dass PHP korrekt eingebunden ist:

  ```apache
  LoadModule php_module modules/libphp.so  
  AddType application/x-httpd-php .php
  ```

#### b) Nginx
- Stellen Sie sicher, dass PHP-FPM installiert und aktiviert ist.
- Fügen Sie in der Nginx-Konfigurationsdatei (`nginx.conf`) einen Block für PHP-Dateien hinzu:

  ```nginx
  location ~ \.php$ {  
      include fastcgi_params;  
      fastcgi_pass 127.0.0.1:9000;  
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
  }  
  ```

#### c) IIS (Windows)
- Installieren Sie PHP mit dem Microsoft Web Platform Installer.
- Stellen Sie sicher, dass die Handlerzuordnung für `.php`-Dateien auf den PHP-Interpreter verweist.

### 3. Webseite konfigurieren

#### Projektdateien ins Webserver-Verzeichnis kopieren:
- Platzieren Sie den gesamten Inhalt des Ordners `webseite` mit dem Quellcode der Webseite in das Hauptverzeichnis Ihres Webservers:
    - **Apache**: Kopieren Sie die Dateien in das `htdocs`-Verzeichnis (z. B. `C:\xampp\htdocs\mein-projekt`).
    - **Nginx**: Platzieren Sie die Dateien im Root-Verzeichnis, das in Ihrer Konfiguration definiert ist (z. B. `/usr/share/nginx/html`).
    - **IIS**: Legen Sie die Dateien in das Verzeichnis der zugehörigen IIS-Site (z. B. `C:\inetpub\wwwroot`).

#### Caching aktivieren (empfohlen):

- **Apache**: Aktivieren Sie das Modul `mod_expires` und fügen Sie folgende Regeln zur `.htaccess`-Datei im Projektordner hinzu:

  ```apache
  <IfModule mod_expires.c>  
      ExpiresActive On  
      ExpiresByType text/html "access plus 1 hour"  
      ExpiresByType image/gif "access plus 1 week"  
      ExpiresByType image/jpeg "access plus 1 week"  
      ExpiresByType image/png "access plus 1 week"  
      ExpiresByType text/css "access plus 1 week"  
      ExpiresByType text/javascript "access plus 1 week"  
      ExpiresByType application/javascript "access plus 1 week"  
  </IfModule>  
  ```

- **Nginx**: Fügen Sie der Nginx-Konfigurationsdatei folgendes hinzu:

  ```nginx
  location ~* \.(jpg|jpeg|png|gif|css|js|ico|html)$ {  
      expires 7d;  
      add_header Cache-Control "public, max-age=604800";  
  }  
  ```

### 4. Berechtigungen setzen

- Stellen Sie sicher, dass der Webserver die erforderlichen Berechtigungen für das Verzeichnis hat, in dem die Webseite liegt:

  **Linux**:
  ```bash
  chmod -R 755 /pfad/zum/webverzeichnis  
  chown -R www-data:www-data /pfad/zum/webverzeichnis  
  ```

  **Windows**:
    - Überprüfen Sie die Sicherheitseinstellungen des Ordners und geben Sie dem Benutzerkonto des Webservers (z. B. `IUSR`) Lese- und Ausführungsrechte.

### 5. Webseite aufrufen

- **Domain oder IP-Adresse öffnen**:
    - Rufen Sie die Webseite mit dem zugewiesenen Domainnamen oder der IP-Adresse auf. Beispiel:
        - `http://localhost`
        - `http://ihre-domain.de`

- **Indexseite testen**:
    - Die Startseite der Webseite sollte automatisch geladen werden (z. B. `index.php`).

## Fehlerbehebung

- **500 Internal Server Error**:
    - Überprüfen Sie die PHP-Fehlerprotokolle, um die genaue Ursache zu finden.
- **404 Not Found**:
    - Stellen Sie sicher, dass die Dateien im richtigen Verzeichnis liegen und die Datei `index.php` vorhanden ist.
- **PHP-Funktionalität überprüfen**:
    - Erstellen Sie eine Datei namens `info.php` mit folgendem Inhalt:

      ```php
      <?php
      phpinfo();
      ?>
      ```
    - Rufen Sie die Datei im Browser auf, um zu überprüfen, ob PHP korrekt funktioniert.

## Zusätzliche Hinweise

- Diese Anleitung ist bewusst allgemein gehalten, um mit verschiedenen Serverumgebungen kompatibel zu sein.
- Für die Bereitstellung in einer Produktionsumgebung sollten zusätzliche Sicherheitsmaßnahmen getroffen werden (z. B. HTTPS, Rechteverwaltung, Zugriffsbeschränkungen).
- Wir empfehlen, relativ aggressives Caching zu aktivieren, um unnötige Last durch ausgeführtes PHP zu verhindern.

## Kontakt

Falls Sie Fragen oder Probleme haben, wenden Sie sich bitte an das Entwicklerteam.