Datei mit PHP erstellen, SAFE MODE, chown(), etc. Problem!

Quests Sohn

Mitglied
Hallo Forum,

ja, ich habe nach meinem Problem gesucht und nein, ich habe wirklich keinen exakt passenden Thread gefunden:

VORABINFO:
1. Ich habe keinen Zugriff auf die PHP.ini und bekomme auch keinen
2. Auf meinem virtuellen Server (liegt beim Provider) ist SAFE MODE aktiv

Ich versuche nun seit zwei Tagen folgendes Szenario umzusetzen:

- Eine Person "User" meldet sich auf meiner Website an.
- Seine Daten wandern in eine DB.
- Die ID des DB-Eintrags wird der Name einer Datei (zzgl. der Endung ".php"), also z. B. "123.php".
- Die Datei wird aus einer vorhandenen Original-Datei erstellt (geöffnet, geändert, geschlossen).
- Die neue Datei wird dann in den Ordner "ordner" auf dem gleichen Server kopiert.
- Die neue Datei enthält include-Befehle, also include($DOCUMENT_ROOT."/include/php/data/extras.php");
- Die neue Datei kann von jedem Besucher direkt aufgerufen werden.

Bis auf die Tatsache, dass der Aufruf der neuen Datei eine Fehlermeldung hervorruft, klappt alles wunderbar. Eintrag funktioniert, Datei wird erstellt und kopiert/verschoben.
Die sicher allseite bekannte Fehlermeldeung lautet:

Warning: main(): SAFE MODE Restriction in effect. The script whose uid is 33 is not allowed to access /home/www/.../home/include/php/data/extras.php owned by uid 834 in /home/www/.../home/anbieter/123.php on line 2

FRAGE: Wie kann ich mit meinen Voraussetzungen mittels eines PHP-Skripts individuelle, "halb-statische" Seiten erstellen (also Seiten, die nicht komplett aus der DB generiert werden), die in der Lage sind, z. B. einen Header (header.php) zu includen
 
Danke erstmal, redX.

Aber ich verstehe wohl nicht ganz, was Du meinst.
1. Falls ich nichts includen will, muss ich ja die DB-Zugangsdaten in jede neue Datei statisch einsetzen (denn eine db-connect-Datei kann ich ja auch nicht includen). Was passiert dann in 200 Jahren, wenn 1.000.000 Dateien geändert werden müssen, weil sich die DB-Zugangsdaten geändert haben?

2. Das mit eval() scheint mir in meinem Fall nichts zu bringen.


Ich möchte irgendwie eine Datei erstellen können, die - auf welche Weise auch immer - einen Kopf- und einen Fußbereich dynamisch einbettet. Diesen Kopf- und Fußbereich möchte ich schließlich jederzeit ändern können, ohne dass ich jede Seite einzeln ändern muss.

Zusätzlich muss jede Seite eine ID haben, die der DB anzeigt, wessen Daten (Name, Homepage, etc.) sie auf der Seite anzeigt.

Gibt es keinen Trick, SAFE MODE zu umgehen, der neuen Datei einen anderen Dateieigentümer zuzuordnen (wird derzeit immer verboten "operation not permitted") oder sonst etwas


HILFE!
 
Safe mode umgehen? Denke nicht, sonst währe es ja sinnlos ;)

Seiten Includen funktioniert schon. Auch wenn safe mode aktiv ist. Nur du wolltest eine PHP Dateil öffnen, den PHP Code abändern und dann wieder abspeichern oder? Das funktioniert nicht.
Eine DB-Connect-php kannst du schon machen und diese dann auch inlcuden.

Was meinst du mit Dynamisch? Wie dynamisch soll das sein? Auf jeder Seite einfach das gleich, und wenn du es 1x änderst sollte es überall ändern? Oder möchest du so etwas wie ein GB oder was auch immer in den Header/footer knallen? Beschreib mal dann kann ich vieleicht weiterhelfen ;)

MFG
redX
 
Das endgültige System kann man sich als Telefonbuch vorstellen:

Man meldet sich an, schreibt seinen Namen, Adresse, etc. in ein Formular. Die Daten werden in eine DB gelegt und parallel wird eine Datei erstellt/generiert/geschrieben. Die Originaldatei (von der jeweils einfach eine Kopie gemacht wird) sieht etwa so aus:

<?php $user = "000"; ?>
<?php include($DOCUMENT_ROOT."/include/php/kopf.php"); ?>
<table width="800"><tr><td><?php echo $user_name; ?></td></tr></table>
<?php include($DOCUMENT_ROOT."/include/php/fuss.php"); ?>

Die Datei "kopf.php" enthält sämtliche PHP-Befehle (includes, DB_Connect, etc.), Head-Infos, Metatags, den Body-Tag, einen HTML-Header, etc.
Die Datei "fuss.php" enthält einen HTML-Footer, den Body- und HTML-Endtag und den Schließbefehl für die DB.
 
Code:
Warning: main(): SAFE MODE Restriction in effect. The script whose uid is 33 is not allowed to access /home/www/.../home/include/php/data/extras.php owned by uid 834 in /home/www/.../home/anbieter/123.php on line 2

Du hast die Falsche Rechte für die Datei....
834 ist ne andere Zahl als 33. Das Kannste mit deinem FTP Programm meist z.B. mit FlashFXP in der Chmod einstellungen für die Datei ändern. Auf manchen Server muss man das machen, hatte ich auch schon mal das Problem. Zu deinem Safemod Problem: Man kann den Safemod nicht umgehen, sonst könnten ihn die Provieder gleich weglassen ....
 
Die Frage verstehe ich nicht. Nur Web oder Root?
Also es gibt ein Root-Verzeichnis.
Das wird wohl nicht das echte Root-Verzeichnis des physischen Servers sein, aber es ist das erste Verzeichnis (der Basis-Ordner), den ich bei meinem Provider angelegt habe.

Keine Ahnung, ob Du das meintest?!
 
Ich wollte wissen ob es ein root-server ist, wenn nicht frage einfach mal bei den Provider nach meiner hatte es mir auch eingestellt

mfg robaer1982
 
Zurück