Zugriffsrechte der Ordner ändern

shorty

Erfahrenes Mitglied
Guten Abend,

gibt es eine Möglichkeit mit PHP die Zugriffsrechte für Ordner auf dem eigenen FTP Server über ein Skript zu ändern? Chmod kann lediglich die Zugriffsrechte der Dateien ändern. Scheinbar hat mkdir() eine Option, die Rechte zu ändern, aber auf meinem Server werden Ordner manuell vom Benutzer erstellt und später erst im Skript sollen Zugriffsrechte geändert werden.

Danke schonmal im Voraus für Antworten :)
 
Soweit ich weiß geht das schon ... mir fällt nur grad der Befehl nicht ein und auch nich ob das jetzt PHP oder MySql ist.

// Edit, dachte chmod geht auch bei Ordnern ... sry
Aber versuch doch mal statt dem Dateinamen einfach einen Ordner anzugeben ...

PHP:
chmod ("/somedir/folder/", 755);
 
Zuletzt bearbeitet:
Hey,

wenn ich nur den Dateinamen angebe, gibt chmod() folgende Fehlermeldung zurück: Operation not permitted.
 
Habe zum Test mal von GiFt-ZwErG zu Herzen genommen und mir eine FTP-Verbindungs-Funktion geschrieben, allerdings erkennt PHP die PHP Funktion "ftp_chmod" nicht -> "Call to undefined function: ftp_chmod() in [...]".

Kann sich das jemand erklären?
 
Welche PHP-Version läuft denn auf dem Webserver?

Die Funktion ftp_chmod() gibt es erst seit PHP 5 ! ;)


EDIT: Probiers doch mal mit ftp_exec()

in $kommando steht dann natürlich nicht "ls -al" sondern "chmod 777 /pfad/ordner/"
 
Zuletzt bearbeitet:
Hey,

PHP 5 ist nicht installiert, sondern eine Version davor und demzufolge hängt es wohl auch damit zusammen, dass es die Funktion noch nicht gibt ^^.

Habe es mal mit ftp_exec() probiert, aber dann erhalte ich folgenden Fehler: "'SITE EXEC' not understood in [...]".

Bist du dir sicher, dass der FTP Befehl "chmod ..." heißt?
 
Servus,

ftp_exec() führt nen "SITE EXEC ..." Befehl auf dem FTP Server durch, und das muss der FTP Server erst mal unterstützen.
Das was du willst ist nen RAW Command versenden.

Sprich sowas (FTP Login):

PHP:
<?php
$fp = ftp_connect("ftp.example.com");

/* This is the same as: 
   ftp_login($fp, "joeblow", "secret"); */
ftp_raw($fp, "USER joeblow");
ftp_raw($fp, "PASS secret");
?>

Änder das einfach in den FTP CHMOD Befehl um.

Wenn ich mich richtig erinnere wäre das dann:

PHP:
<?php
$fp = ftp_connect("ftp.example.com");
ftp_login($fp, "joeblow", "secret"); 
ftp_raw($fp, "CHMOD 777 test");
?>
 
Hey, ich schätze, dass ftp_raw() ebenfalls erst in PHP 5 verfügbar ist :)... Hm, gibt es denn sonst keine Möglichkeit ?
 
Ich denke das hier
PHP:
ftp_raw($fp, "CHMOD 777 test");
sollte eher so aussehen:
PHP:
ftp_raw($fp, "SITE CHMOD 777 test");
Hierzu siehe die entsprechende Funktion meiner Klasse:
PHP:
public function chmod($mode,$name)
{
	if ($this->controlconnection==false)
		{
			return false;
		}
	fwrite($this->controlconnection,'SITE CHMOD '.$mode.' '.$name."\r\n");
	$response=fgets($this->controlconnection);
	if (substr($response,0,1)!=2)
		{
			return false;
		}
	return true;
}

Und zu den Rechten: 777 ist eigentlich so gut wie immer unnoetig.
Es sollten die Rechte schon entsprechend der Situation gesetzt werden, und alle Welt braucht doch in der Regel eigentlich keinen Schreibzugriff, oder?

Nachtrag:
Wenn Dir die FTP-Funktionen nicht zur Verfuegung stehen, oder eben einige nicht, dann probier doch einfach mal meine Klasse. Gift-Zwerg hat die Seite ja bereits zuvor verlinkt.
Weiterhin gibt es hier auch ein Tutorial dazu.
 
Zurück