uid bei fopen anders als die uid vom skript

Satyricon

Grünschnabel
Hallo zusammen.

Zuerst sollte ich vielleicht sagen, dass ich ein PHP-Neuling bin.

Das Problem ist folgendes: wenn ich in einer PHP-Datei eine andere PHP-Datei erstelle (mit touch oder fopen), so hat sie nicht dieselbe uid wie die php-Datei wo touch oder fopen ausgeführt wird.
Dies ist problematisch, da mein webhost-server im safe mode läuft.
Ich erhalte aus diesem Grund eine Fehlermeldung, da in der neu erstellten Datei ein require_once mache.

Kann ich da irgendetwas machen?
 
Zwei kurze Fragen, was bitte ist "uid" und kannst du hier vielleicht dein Skript veröffentlichen?
 
Hallo,
die UID ist die ID des Besitzers einer Datei.
Die PHP-Datei gehört wahrscheinlich Dir selbst.
Doch die erzeugte Datei wird durch PHP-Erzeugt, das bei Unix/Linux unter einem anderen Nutzer läuft.

Mit der Funktion chown(string filename, mixed user) kannst Du den Eigentümer der Datei ändern.

Siehe dazu: http://de.php.net/manual/de/function.chown.php

Gruß, snuu
 
Also wenn ichs richtig verstanden hab, dann hast du da keinen Einluss darauf, weill PHP ja auch nicht mehr Rechte hat!
 
Hallo
Ich habe chown einmal mit folgendem Code getestet.
PHP:
$fp = fopen ("testdatei2.htm", "w");
chown("testdatei2.htm", fileowner("rezeptBeisteuern.php"));
fclose ($fp);
Ich bekomme aber folgende Fehlermeldung:
Warning: chown() [function.chown]: Die Operation ist nicht erlaubt in /usr/local/apache/www/web392/html/Rezept/speicherntest.php on line 75

Ich habe einmal die ganzen Benutzerdaten ausgegeben
$array = posix_getpwuid(fileowner("rezeptBeisteuern.php"));
print_r($array);
Der name der uid von rezeptBeisteuern.php (und damit auch alle anderen Dateien ausser die selbst generierten) lautet web392 was mein Benutzername beim Webhost ist.

Hat irgendjemand eine Idee was ich noch machen könnte?
 
Versuch mal die Datei erst zu schließen und dann chown auszuführen.
Soweit ich weiß, erwartet chown die USER-ID (Zahl) und keinen String.
Also:
PHP:
$fp = fopen ("testdatei2.htm", "w");
fclose ($fp);
chown("testdatei2.htm", getmyuid());

mfg, snuu
 
Zuletzt bearbeitet:
Leider geht das auch nicht.
Warning: chown() [function.chown]: Operation not permitted
Liegt das daran, dass ich möglicherweise keine root Rechte habe oder ist das was ich machen möchte im SafeMode nicht möglich? :(
 
chown hilft da nicht weiter -
so wie es festgestellt habe, hat im Savemode jedes Script eine andre UID
(warum auch immer)

was hilft:
nach dem erstellen vom File mit chmod die Rechte am File ändern
660 als Beispiel
Das setzt aber Voraus das du als User und PHP als user in der Gleichen Gruppe ist.
ansonsten chmod 666 - dann kann aber jeder dein File ändern :-(
 
Die ganzen skriptdateien haben bei mir schon dieselbe uid (hab nicht alle überprüft aber einige ;) ).
Ich habe mit chmod die Rechte der neu generierten Datei auf 660 gesetzt und es hat auch geklappt.
Nur bekomme ich noch immer diese Fehlermeldung

Warning: main() [function.main]: SAFE MODE Restriction in effect. The script whose uid is 510 is not allowed to access ../createNavigation.inc.php owned by uid 1606 in /usr/local/apache/www/web392/html/Rezept/test6.php on line 15

Warning: main(../createNavigation.inc.php) [function.main]: failed to create stream: Permission denied in /usr/local/apache/www/web392/html/Rezept/test6.php on line 15

Fatal error: main() [function.main]: Failed opening required '../createNavigation.inc.php' (include_path='.:/usr/local/lib/php') in /usr/local/apache/www/web392/html/Rezept/test6.php on line 15

Zur erklärung: in Zeile 15 steht ein
PHP:
require_once(../createNavigation.inc.php)
Ich habe die Rechte von createNavigation.inc.php sogar auf 777 gesetzt aber es hilft nichts.

Trotzdem möchte ich euch für eure Bemühungen danken
 
Zurück