Seite 1 von 1
PHP-Skript funktioniert nicht...
Verfasst: 23.08.2006 09:37
von nehcregit
Hallo, ich möchte allen Dateien in dem Verzeichnis "downloads" auf meinem Server die Rechte 644 per Cronjob geben. Mit dem Cronjob rufe ich derzeit die Datei "downloadrechtesetzen.php" auf, die im übergeordneten Verzeichis zum Downloadverzeichnis liegt und folgenden Inhalt hat:
Irgendwie klappt es aber nicht. Kann mir jemand sagen, wo mein Fehler ist?
Verfasst: 23.08.2006 10:15
von PhilippK
Vermutlich weil chmod() keine Platzhalter unterstützt
http://www.php.net/chmod/
Gruß, Philipp
Verfasst: 23.08.2006 10:18
von nehcregit
Ja, soweit bin ich inzwischen ja auch. Aber wie kann ich denn damit mehrere Dateien chmodden? Im Netz finde ich immer nur Beispiele für eine explizite Datei...
Sorry für den falschen Bereich
Edit: Wobei ich anmerken muss, dass es nicht reicht, die Dateien einzeln im Skript aufzuführen, da das Verzeichnis "lebt" und ständig Dateien hinzukommen.
Verfasst: 23.08.2006 11:07
von Banger
nehcregit hat geschrieben:Ja, soweit bin ich inzwischen ja auch. Aber wie kann ich denn damit mehrere Dateien chmodden? Im Netz finde ich immer nur Beispiele für eine explizite Datei...
Das halte ich für eine glatte Lüge.
http://de3.php.net/manual/de/function.chmod.php#47744
Verfasst: 23.08.2006 11:20
von nehcregit
Warum denn so unfreundlich?
Ich kenne mich damit nicht wirklich aus, deswegen konnte ich diesen Code in dem Kommentar auch nicht als für mich passend erkennen. Ihr habt es hier mit einem Frischling zu tun
Kann mir freundlicherweise jemand sagen, wie ich den Code nun für mich passend editieren muss? Wo muss ich z.B. meinen Pfad zum Verzeichnis "downloads" einsetzen?
Verfasst: 23.08.2006 11:33
von Banger
nehcregit hat geschrieben:Ich kenne mich damit nicht wirklich aus, deswegen konnte ich diesen Code in dem Kommentar auch nicht als für mich passend erkennen.
Wie kommst Du dann zu der Aussage, Du hättest nur Beispiele für eine explitzite Datei gefunden?
Ejal, lassen wir das.
nehcregit hat geschrieben:Kann mir freundlicherweise jemand sagen, wie ich den Code nun für mich passend editieren muss? Wo muss ich z.B. meinen Pfad zum Verzeichnis "downloads" einsetzen?
Den Code kannst Du 1:1 übernehmen (es sei denn, Du hast in /downloads/ weitere Unterverzeichnisse, die nicht berücksichtigt werden sollen) und mit
aufrufen. Et voilà

Verfasst: 23.08.2006 11:40
von nehcregit
Vielen Dank!
Es gibt ein Unterverzeichnis, welches "upload" heißt und eigentlich nicht mitberücksichtigt werden sollte. Wird das schwierig?
Edit: Heißt das, ich muss in jeder Zeile $path und $filemode mit diesen Angaben ersetzen?
Verfasst: 23.08.2006 12:02
von Banger
nehcregit hat geschrieben:Es gibt ein Unterverzeichnis, welches "upload" heißt und eigentlich nicht mitberücksichtigt werden sollte. Wird das schwierig?
Ich hab die Funktion mal so umgeschrieben, dass Wildcards berücksichtigt werden:
Code: Alles auswählen
function chmod_bissimehr($path, $filemode, $recursive) {
if(is_file($path))
return chmod($path, $filemode);
if(is_dir($path))
return $recursive ? chmod($path, $filemode) && chmod_bissimehr($path.'/*', &$filemode, TRUE) : chmod($path, $filemode);
if(!$buf = glob($path))
return TRUE;
foreach($buf as $fd)
if(!chmod($fd, $filemode))
return FALSE;
if(is_dir($fd) && $recursive && !chmod_bissimehr($fd.'/*', &$filemode, TRUE))
return FALSE;
return TRUE;
}
Aufruf:
- der dritte Parameter bestimmt, ob Unterverzeichnisse mit eingeschlossen werden sollen.
EDIT: Aufruf korrigiert, danke easygo
nehcregit hat geschrieben:Edit: Heißt das, ich muss in jeder Zeile $path und $filemode mit diesen Angaben ersetzen?
N!E!I!N! Das ist eine Funktion, da musst Du nur den entsprechenden Parameter angeben. Falls Dir das nicht klar ist, lege Dir
dringendst PHP-Grundwissen an, bevor Du Dich weiter an Code versuchst.
Verfasst: 23.08.2006 12:37
von easygo
Banger hat geschrieben:Aufruf:
Code: Alles auswählen
function chmod_bissimehr('/downloads/*.*', 0644, FALSE);
So gibt das keinen Aufruf. easy
Verfasst: 23.08.2006 13:02
von nehcregit
Ich hatte es mir leichter vorgestellt. Muss ich wohl erstmal ne Weile googeln und mich einlesen... Danke bisher trotzdem...