chmod und fileperms

HPB

Erfahrenes Mitglied
Kann mir jemand mit den Befehlen chmod und fileperms helfen?
Es geht um folgendes:

Wenn ich von Dateien den auf meinem Web-Server über ein PHP-Skript die Rechte anzeigen lassen will, so verwende ich doch bspw:
echo fileperms("filearchive/$dateiname");
Als Ergebnis hätte ich soetwas wie -rwxrwxrwx oder 0777 erwartet. Als Ergebnis erhalte ich aber bspw: 33279.
Kann mir jemand diese Zahlen erklären, bzw sagen wie ich die eigentlichen chmod werte erhalte?
------------------
Ein ähnlichen Problem habe ich mit dem setzen der Reche: Ich bekomme die Fehlermeldung: Warning: chmod(): Operation not permitted. Wieso das? Muss mein PHP anders konfiguriert werden. Unter php.net wurde ich diesbezüglich nicht fündig.
Meine Absicht ist es letztendlich ungefähr folgenden Befehl zu verwenden:
$rechte=$_GET['rechte']; echo "Rechte werden auf $rechte gesetzt.";
$erg=chmod("filearchive/$dateiname",$rechte);
if ($erg==1) echo "...erfolgreich";
else "...fehlgeschlagen!";
.
Letztendlich will ich die Rechte aller Dateien in einem bestimmten Verzeichnis ändern. Wenn ich der Fkt. chmod aber als Pfad bspw "filearchive/*" angebe,dann erhalte ich aber sogar die Fehlermeldung:
Warning: chmod(): No such file or directory.

Ich glaub, dass ich da mit dem Setzten/lesen der Rechte einfach nur was grundsätzliches falsch verstanden habe, oder woran liegt es.

Danke im voraus für die Hilfe.
Gruß,
PETER
 
Wenn bei chmod die operation not permitted ist, dann hat der User mit dem PHP und Apache läuft keine Rechte dies zu tun.

Um dies zu ändern musst du die Verzeichnisse dem User zuordnen, mit dem PHP und Apache laufen.

Bsp. chown -R nobody:nobody /var/www/htdocs/*

In der Linux Shell natürlich.

Bei der anderen Funktion hab ich keine Ahnung.
 
wer kann mit mir fileperms helfen? und Danke Telfa

Der Tip von Telfa war gut. Das hatte ich nicht bedacht. Aber wer kann mir mit dem fileperms helfen (siehe oben.) Ich habe noch etwas im WWW gestöbert. Kann aber nicht passendes findet. Das sollte doch ein eher alltägliches problem sein, oder?
 
Problem nicht gelöst !

...und es taucht noch ein Problem auf:
Das setzen der Rechte mit chmod("filearchive/test.txt",0777); klappt mittlerweise ohne Probleme.
Was nicht funktioniert:
a) Rechte aller Dateien eines Verzeichnisses ändern:
chmod("filearchive/*",0777); ist ja vom Code her quasi identisch, führt aber zur Fehlermeldung:Warning: chmod(): No such file or directory .

b) fileperms ? Das versteh ich überhaupt nicht mit den Zahlen. Bei chmod 777 erhalte ich bspw. 33279. (also auch keine Oktalzahl). Was soll das ?

Anmerkung zu OKTALZAHLEN:
Die zu setzenden Rechte dürfen nicht aus einer Variablen stammen? Ich will die Rechte über $rechte=$_GET['rechte']; einlesen und mit chmod("filearchive/test.txt",$rechte); setzen. Dabei erhalte ich die Fehlermeldung Warning: chmod(): Inappropriate file type or format. Das Problem ist, dass chmod einen Aufruf der Form chmod(String,Oktalzahl) erwartet. In $rechte habe ich aber 0777 als String übergeben. Die führende 0 nützt da nix.Mit folgendem Befehl fuktioniert's dann aber: chmod("filearchive/datei",octdec($rechte))
(nur so für alle, die auch mal daran scheitern)
 
Wenn du die Rechte einer Datei auslesen möchtest benutze diesen Code:
PHP:
<?php
$chmod = fileperms('datei.txt');
$chmod = sprint('%o', $chmod);
echo $chmod;
?>
 
Zurück