Klaus: safe_mode = Off ?? Wie macht ihr es?

Beitrag lesen

Hallo,

Bekanntester Fall ist das Anlegen einer Datei in einem Verzeichnis, dass duech FTP angelegt wurde. Das Script wurde ebenfalls durch FTP hochgeladen. Das Anlegen einesr Datei klappt noch, da hier nur die Rechte aus dem Verzeichnis gelten (Skript und Verzeichnis habe denselben Owner) aber das Ändern oder Löschen der Datei klappt dann nicht mehr, weil hier plötzlich der Owner der Datei (zB. WWWRUN) nicht mehr übereinstimmt mit dem des Scriptes oder des übergeordneten Verzeichnisses.
Also wenn man mit PHP eine Datei anlegt, dann hat dieses afaik den Owner wie der User der PHP ausführt.
Dementsprechend kann der PHP Script diese selbst angelegte Datei beliebig verändern.

Nein, leider nicht, wenn der Safe-Mode eingeschaltet ist.

also persönlich vertreibe ich auch ein kleines Script, mit einer selbstgeschrieben Template-Engine.
Diese legt in einem Cache-Ordner die erstellen PHP Dateien ab um sie per include dann ins Script zu laden.
Dort funktioniert das alles einwandfrei, wenn man ein Template ändert, überschreibt die Template Engine automatisch die entsprechende Datei im Cache.

Dabei wird das Script für die Template-Engine, der leere Cache-Ordner als auch die Templates per FTP hochgeladen.
Auch mit Safe Mode = on läuft das tadellos, das einzige was der User machen muss, ist dem Cache-Ordner die Rechte 777 zu geben (bzw. sicherzustellen, dass ein PHP Script Dateien in diesem Ordner erstellen darf).

CMS-Systeme werden daher meistens durch ein Upload-Modul installiert. Das stellt sicher, dass alle Scripte und von diesem Modul angelegten Verzeichnisse dem Webserver-User gehören. Damit darf er auch damit arbeiten.

Das ist mir wirklich neu.
Also größere Boardsysteme, wie das wbb2, phpBB2, vBulletin3 werden normal per FTP hochgeladen, und zwar alle PHP Dateien.

Anschließend ruft man eine install.php/setup.php o.ä. auf. Diese überprüft einmal, ob die Schreibrechte richtig gesetzt sind, einmal für den cache/tmp Ordner der für die Templates benötigt wird, das Verzeichnis in dem HTTP Uploads der User landen, die Datei mit den Config Daten etc.
Anschließend fragt diese install.php einfach nur die Datenbankverbindungsdaten ab, passt die config Datei entsprechend an, erstellt die entsprechenden Tabellen und das Board läuft, egal ob Safe Mode on oder off.

Gut, wie sich das alles nun verhält wenn man noch Unterverzeichnisse usw. per PHP erstellen muss, kann ich nicht sagen.
Aber wie gesagt, diese doch sehr großen Board-Systeme haben keine Probleme in einem (cache)-Ordner Dateien zu schreiben, ändern, löschen.

MFG