lehrkraefte:blc:informatik:ffprg2-2023:serverfileio

This is an old revision of the document!


Eine Datei auf dem Server mit PHP schreiben und lesen

  • PHP muss auf dem Webserver konfiguriert sein.
  • Der Benutzer des Webservers (www-data) muss die Erlaubnis haben, in ein bestimmtes Verzeichnis zu schreiben.
  • Das Vezeichnis sollte vor direktem Webzugriff geschützt sein.

Damit der Webserver Zugriff hat, kann man als Benutzer Schreibrechte für alle auf ein Verzeichnis geben, oder der Administrator kann ein Verzeichnis anlegen, auf das www-data Schreibrechte hat.

Damit der Webserver aber keine Datei darin direkt ausliefert, wurde darin die Datei .htaccess mit folgendem Inhalt angelegt:

Order deny,allow
deny from all

Das wurde mir folgendem bash-script erledigt:

set -x
user=$1
home=`eval echo ~$user`
data=$home/www-data-dir
mkdir -p $data
echo -e "Order deny,allow\ndeny from all" > $data/.htaccess
chown -R $user:www-data $data
chmod g+rwx $data

Kopieren Sie den Ordner simple-file-io vom Archiv https://ofi.tech-lab.ch/2023/teach/76f5054a/simple-file-io.zip in Ihr Homeverzeichnis auf dem Webserver.

Testen Sie den Code online und studieren Sie den PHP-Code in den PHP-Dateien.

Bei einem Zugriff auf einen Webserver mit der GET-Methode werden alle Parameter in der URL gespeichert (Bildquelle):

Diese Parameter können in PHP im Objekt $_GET ausgelesen werden.

Im Gegensatz dazu können Daten mit HTTP POST direkt zum Server gesandt werden, die nicht in der URL erscheinen. Dies ist z.B. absolut nötig für vertrauliche Information, wie z.B. Passwörter etc.

Dazu sollte

Szenario: Der Live-Server auf localhost möchte per XMLHttpRequest auf ofi.tech-lab.ch zugreifen.

Das schlägt fehl, der Browser unterbindet aus Sicherheitsgründen solche Requests. Wenn aber der ofi.tech-lab.ch-Server dem localhost, bzw. 127.0.0.1 die Erlaubnis für den Zugriff erteilt, funktioniert das. Dazu deponieren Sie im Verzeichnis, wo die aufgerufene URL liegt folgenden Inhalt in die Datei .htaccess:

Header add Access-Control-Allow-Origin "http://127.0.0.1:5500"

(Dazu muss im Apache Webserver das Module headers aktiviert sein, was bei unserem Server gemacht wurde).

  • lehrkraefte/blc/informatik/ffprg2-2023/serverfileio.1693229465.txt.gz
  • Last modified: 2023/08/28 15:31
  • by Ivo Blöchliger