Enno Geschrieben 25. April 2005 Teilen Geschrieben 25. April 2005 Hallo, opendir (DIR0 , "M:") || die "Kann Verzeichnis nicht lesen!!" ; foreach $dat (readdir(DIR0)) { if (-d "M:\\$dat") { if (-e "M:\\$dat\\.") { opendir (VERZ , "M:\\$dat") || die "Kann Unterverzeichnis nicht laden!!"; foreach $tmp (readdir(VERZ)) { if (-d "M:\\$dat\\$tmp") { if ($tmp eq $USERNAME1) { print "Verzeichnis gefunden!\nM:\\$dat\\$tmp gehört zu User $USERNAME\n"; # $VERZ = "M:\\$dat\\$tmp"; } } } closedir(VERZ); } } } closedir(DIR0) ; Ich habe eine Variable $USERNAME1. Nun soll er in der Unterverzeichnissen von M:\ nach dieser Variable suchen. Problem: Solange ich Admin bin, kein Problem. Ich komme ja überall ran. Nur wenn ich eben normal User bin, der in manchen Verzeichnissen keine Berechtigung hat, bricht er ab, sobald ich versuche das Verzeichniss per opendir zuöffnen. Auch die Abfrage mit if (-e M:\verz\.) bringt nichts. -w genausowenig. Wie kann ich prüfen ob ich in dem Verzeichnis in das ich reinwill überhaupt lesen darf. Danke Gruß Enno Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sissy66 Geschrieben 27. April 2005 Teilen Geschrieben 27. April 2005 http://www.infos24.de/phpe/handbuch/11_php_funktionen_zum_testen.htm hab bei google mal eingegeben 'php rechte testen', weil bei php.net zwar toller Code usw. steht, aber eh ich die richtige Seite dazu weiss ... und dann stand da was, dass man das gut ueber ein filehandle machen kann, gleich mit Code und so (guck Dir noch mal bitte die Verschachtelungen Deiner Schleifen an, vielleicht geht da was zu optimieren) Liebe Gruesse, sissy66. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 27. April 2005 Teilen Geschrieben 27. April 2005 auf anhieb würde ich es mal mit is_readable() o.ä. versuchen....musst du mal in der PHP Doku nachsehen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Johannes Buchner Geschrieben 27. April 2005 Teilen Geschrieben 27. April 2005 Du hast einen sehr bash-artigen PHP-Programmier-Stil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sissy66 Geschrieben 27. April 2005 Teilen Geschrieben 27. April 2005 auf anhieb würde ich es mal mit is_readable() o.ä. versuchen....musst du mal in der PHP Doku nachsehen. cool, es gibt so was wie is_readable fuer files, wieder was dazu gelernt ... weiter lesend ... es gibt aber komischer Weise kein dir_is_readable oder so aehnlich und bei readdir im ex2 unt. steht, wie man das mit dem handle generell so machen kann: while (false !== ($file = readdir($handle))) { if ($file != ".") { ... dann brauchst Du es Dir nur noch fuer Deine Zwecke umkopieren, sodass, wenn false eintrifft, dann gehe zum naechsten dir (durch zaehlvariable von Anweisung/Schleife hochsetzen) und ins log-file printen, wie '$handle'-dir not usable und dann mache weiter mit Dateimanipulationen Liebe Gruesse, sissy66. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sissy66 Geschrieben 27. April 2005 Teilen Geschrieben 27. April 2005 Du hast einen sehr bash-artigen PHP-Programmier-Stil (( ... das kann man auch irgendwo? umstellen, dass er statt tab lieber nur 2 whitespaces zum einruecken nimmt (das ware dann ein neuer thread, zu fragen, wo das geht) (Ausserdem, nix gegen die bash! ) )) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 28. April 2005 Autor Teilen Geschrieben 28. April 2005 Jungs a das ist perl! daher der bash-style und ja man kann meinen Editor umstellen auf 2 Space anstatt Tab. Dann ist aber immer Tab = 2 Spaces und das mag ich garnicht. b das mit readebale kuck ich mir mal an. c hab ichs anders gelöst und zwar so: opendir (DIR0 , "M:") || die "Kann Verzeichnis nicht lesen!!" ; foreach $dat (readdir(DIR0)) { if (-d "M:\\$dat") { if (-d "M:\\$dat\\$USERNAME1") { print "Verzeichnis gefunden!\nM:\\$dat\\$USERNAME1 gehört zu User $USERNAME\n\n"; $VERZ = "M:\\$dat\\$USERNAME1"; } } } closedir(DIR0) ; Ich kann hier abkürzen, da ich eben weis, das die gesuchten Verzeichniss direkt darin liegen müssen. Und da er hier nicht versucht das Verzeichniss zu öffnen bekommt er auch keine Probs wenns lesegeschützt ist. Trotzdem Danke für die Hilfe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
sissy66 Geschrieben 28. April 2005 Teilen Geschrieben 28. April 2005 Ui, na dann eben Perl. (Hab mich schon gewundert, warum da so viele Optionen drin stehen.) Das sieht irgendwie trotzdem sehr aehnlich aus. Und die ganzen Funktionen, wie opendir, etcpp gibts auch bei PHP und das hab ich schon mal benutzt, deswegen hab ich da nicht an Perl gedacht. Ich kann das nur bei wenig Code auf den ersten Blick erkennen, wenn da stehen wuerden '<?php ?>' oder '#!/usr/local/bin/perl' oder irgendeine fette regular expression zu sehen ist. Dann faellt es mir auch auf, wenn ich das nicht jeden Tag benutze. Aehm, und warum machst Du es nicht gleich als shellscript? ... Ne bash? ist doch immer irgendwie installiert und das Perl will immer neue Module haben, die nachinstalliert werden muessen, sodass man irgendwie nie die Version hat, die man gerade moechte. Ausserdem kann es sein, dass die Module sich untereinander nicht vertragen. Und die Perlheader koennen mitunter ganz schoen fett werden ... hab ich zumindest gehoert. (Ich mache mein Zeugs nur mit shellscripten, weil ich unter public oder in meinem home schon viele sind, wo ich dann ein bisschen abgucken kann) Mal ne andere Frage, gibts so was wie php.net auch fuer perl? (Ich lese immer nur 'Perl ist toll', 'Perl-Mongers in Dresden' usw.) Liebe Gruesse, sissy66. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 28. April 2005 Teilen Geschrieben 28. April 2005 perl.de, perlhelp.de, perl-board.de, perl.org, die cgi spec, den idiots guide, mod_perl bei apache, modperl, perl dbi, etc etc etc *fg* und natürlich das usenet - comp.lang.perl.* !!!1eins s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Enno Geschrieben 28. April 2005 Autor Teilen Geschrieben 28. April 2005 Aehm, und warum machst Du es nicht gleich als shellscript? sagt dir WIN XP was? Perl hat den Vorteil, das es eben auf Win und Unixen läuft. Jedenfalls wenn man beim coden etwas aufpasst. Ausserdem will ich mit meinen perl-scripten eh meistens nur die unzulänglichkeiten von Windows ausgleichen. Oder den Admins die sich nix gedacht haben. Hier ist das problem: Username = Nachname Vorname Verzeichnissname = Nachname_Vorname Und dann sind die Verzeichniss auch noch nach Abteilung in Unterordnern geordnet. arrrrgg, wie kommt man auf solche Ideen. Ändern geht nicht mehr ist schon zutief verwurzelt. Drum den konstrukt hiermit. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.