| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

29-07-2009, 14:01
|
|
TweetyExtreme
Registrierter Benutzer
|
|
Registriert seit: Jul 2009
Beiträge: 4
|
|
chmod für Unterverzeichnisse
Hallo Profis!
Ich bin ein totaler Newbee bei PHP und benötige ein Script welches mir ein Verzeichnis ausliest, und die Verzeichnisrechte auf 0777 setzt. Schön wäre es auch, wenn es ausgibt ob es funktioniert hat oder nicht. Zumindest die Verzeichnisse welche nicht geändert werden konnten sollten angezeigt werden.
Ich schaffe es zwar mit
<?php
@chmod("Verzeichnis", 0777);
?>
ein Verzeichnis zu ändern, habe aber keine Ahnung wie das bei Unterverzeichnissen funktionieren könnte.
Ich bin Euch für Eure Hilfe dankbar. Solltet Ihr so nett sein und mir Code posten, so erklärt mir bitte auch was geschieht, ev. kann ich´s dann begreifen. -Danke!
Lg
TE
|

29-07-2009, 14:14
|
|
Slava
PHP Senior
|
|
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.583
|
|
schon mal doku angeschaut?
PHP: chmod - Manual
|

29-07-2009, 14:51
|
|
TweetyExtreme
Registrierter Benutzer
|
|
Registriert seit: Jul 2009
Beiträge: 4
|
|
Ja, ich habe mir die Doku angesehen, so bin ich ja überhaupt auf chmod gekommen. Leider fange ich mit dem Vokabel RecursiveIteratorIterator
nichts an. Ich denke es sollte doch möglich sein die Verzeichnisse auszulesen und abzuarbeiten, oder irre ich mich da?
Danke für Eure Hilfe!
Lg
TE
|

29-07-2009, 14:55
|
|
mkb_webprint
Registrierter Benutzer
|
|
Registriert seit: May 2009
Beiträge: 53
|
|
Zitat:
Zitat von TweetyExtreme
Ja, ich habe mir die Doku angesehen, so bin ich ja überhaupt auf chmod gekommen. Leider fange ich mit dem Vokabel RecursiveIteratorIterator
nichts an. Ich denke es sollte doch möglich sein die Verzeichnisse auszulesen und abzuarbeiten, oder irre ich mich da?
Danke für Eure Hilfe!
Lg
TE
|
Vielleicht schaust du dir den Link den Slava gepostet hat mal ganz genau an....machst dann mal C&P, testest ob es geht und wenn setzt dich dann mal mit dem RecursiveIteratorIterator auseinander...
|

29-07-2009, 15:24
|
|
TweetyExtreme
Registrierter Benutzer
|
|
Registriert seit: Jul 2009
Beiträge: 4
|
|
Hallo mkb_webprint!
Das habe ich natürlich versucht wie ich auf chmod gestoßen bin. Ich habe mehrere Codes von der Seite getestet. Bei dem Link auf den mich Slava hingewiesen hat bekomme ich leider nur eine Fehlermeldung.
Diese hier: Fatal error: Trying to clone an uncloneable object of class RecursiveIteratorIterator in /var/www/pfad zum Script/chmod.php on line 2
Darum habe ich auch versucht das Vokabel zu verstehen oder auch es von einem "Wissenden" erklärt zu bekommen.
Ich bin nicht nur daran interessiert das irgendwie zum Laufen zu bekommen. Ich möchte es auch verstehen.
Ich hoffe das mir jemand weiterhilft.
Lg
TE
|

29-07-2009, 15:38
|
|
mkb_webprint
Registrierter Benutzer
|
|
Registriert seit: May 2009
Beiträge: 53
|
|
Dann solltest du in deiner Antwort auch sagen, das die Beispiele die über den Link von Slava erreichbar sind nicht funktionieren und dann die Fehlermeldung mit dazu posten bzw. dich über Google schlau machen.
Aus deiner Antwort ging hervor, das du die Beispielcodes einfach nur nicht verstehst und nicht, das sie nicht funktionieren.
Gruß
Björn
|

29-07-2009, 15:56
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
So sollte es mit deinem Iterator gehen:
PHP-Code:
foreach($iterator as $item)
{
switch(true)
{
case $item->isdir() : chmod($item->getPathname(),0755); break;
case $item->isfile(): chmod($item->getPathname(),0644); break;
}
}
Das Beispiel im Handbuch ist gefährlich. Es setzt u.U. stinknormale Dateien auf "ausführen".
Geändert von combie (29-07-2009 um 15:58 Uhr)
|

29-07-2009, 16:57
|
|
TweetyExtreme
Registrierter Benutzer
|
|
Registriert seit: Jul 2009
Beiträge: 4
|
|
Hallo combie,
danke für Deine Antwort. Ich habe nun den Code entsprechend geändert auf
<?php
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathname), RecursiveIteratorIterator::SELF_FIRST);
foreach($iterator as $item)
{
switch(true)
{
case $item->isdir() : chmod($item->getPathname(),0755); break;
case $item->isfile(): chmod($item->getPathname(),0644); break;
}
}
?>
Dies produziert jedoch leider auch die folgende Fehlermeldung: Fatal error: Trying to clone an uncloneable object of class RecursiveIteratorIterator in /var/www/Pfad zum Skript/chmod2.php on line 2
Ich werde das vorerst zurückstellen. Ich habe mir nun ein Skript gebaut wo ich alle Verzeichnisse händisch geändert habe.
Sollte ich wieder mehr Zeit haben werde ich mich wieder mit PHP beschäftigen.
Danke an alle die mir helfen wollten.
Lg
TE
|

29-07-2009, 17:00
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
[Glaskugel]Du solltest bei dir mal die Zendengine 2 aktivieren.[/Glaskugel]
|

29-07-2009, 19:01
|
|
gourmet
Registrierter Benutzer
|
|
Registriert seit: Feb 2007
Beiträge: 154
|
|
Hallo,
zum reinem auslesen der Verzeichnisse mußt du den chmod nicht auf 0777 stellen, 0644 ist völlig ausreichend, desweiteren sollte das php script auch der Besitzer des Verzeichnisses sein.
VG
gourmet
|

29-07-2009, 19:14
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
|
0644 ist völlig ausreichend
|
Nein!
Ohne x Recht kann ein Verzeichnis nicht betreten werden. Es kann also NICHT ausgelesen werden.
|

29-07-2009, 19:17
|
|
gourmet
Registrierter Benutzer
|
|
Registriert seit: Feb 2007
Beiträge: 154
|
|
Zitat:
Zitat von combie
Nein!
Ohne x Recht kann ein Verzeichnis nicht betreten werden. Es kann also NICHT ausgelesen werden.
|
sorry stimmt 0755 für Verzeichnisse, 0644 für Dateien.
so besser
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|