php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.07.2010, 21:50  
Benutzer
 
Registriert seit: 15.05.2007
Beiträge: 35
Wing ist zur Zeit noch ein unbeschriebenes Blatt
Wing eine Nachricht über ICQ schicken
Standard Funktion rename() auf USB-Festplatten bringt Fehler

Hallo,


ich habe ein Skript, welches per Knopfdruck ein Verzeichnis durchsucht und die Dateinamen anhand bestimmter Regeln automatisch umbenennt.

Dieses Skript habe ich bereits seit mehreren Jahren und es funktionierte bisher immer einwandfrei. Nun bekomme ich aber einen sehr komischen Fehler.

Wenn ich ein Verzeichnis auf meinem Computer (lokaler Server, lokale Platte) durchsuche, dann funktioniert nach wie vor alles einwandfrei. Nehme ich aber meine Festplatte, die per USB angeschlossen ist als Ziellaufwerk, so kommt ein Fehler, dass das Umbenennen nicht geklappt hat.

Nicht falsch verstehen. Den Fehler bekomme ich schon seit dem ersten Mal, seit ich versuche auf einem Ordner auf der USB-Platte Dateinamen zu ändern.

Ich denke ein Codebeispiel brauch ich nicht einzustellen. Es handelt sich lediglich um die Funktion rename().

Im Internet konnte ich auch nichts über das Thema "Schreibrechte" o.Ä. auf USB-Platten finden... bin bei der Suche allerdings auf das Folgende gestoßen:

PHP :: Bug #48771 :: rename() between drives error: No error

Der Bug hat mit meinem Problem allerdings überhaupt nichts zu tun. Lediglich die Fehlermeldung ist bei mir gleich. Es kommt bei mir auch der "no error" Fehler und dann werden die Pfade/Dateinamen angezeigt.

Hoffe jemand von euch kennt sich mit der Thematik aus.

Lg
Wing



Edit: Der Fehler tritt in den XAMPP Versionen 1.7.3, 1.6.3a, sowie 1.5.0 auf... weitere Versionen wurden nicht getestet.. also ist der Fehler in der gesamten Version 5 von php enthalten.

Getestet wurde nur auf Windows 7 Professional x86.

Geändert von Wing (14.07.2010 um 21:58 Uhr).
Wing ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.07.2010, 22:23  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zuallererst: Ich kenne mich nicht aus.

a) Apache hat nicht die Rechte, auf das LW zuzugreifen
b) Das Laufwerk hat einen dynamischen Buchstaben und Apache kann diese nicht auflösen (unwahrscheinlich, denn mit subst kommt Apache zumindest unter XP auch super klar, allerdings handlet WIndows 7 so einiges anders mit Hardlinks/Junctions als zuvor)
c) PHP kann generell nicht Verzeichnisübergreifend kopieren - auch unwahrscheinlich

Vorschlag: exec und Systembefehl benutzen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 15.07.2010, 21:33  
Benutzer
 
Registriert seit: 15.05.2007
Beiträge: 35
Wing ist zur Zeit noch ein unbeschriebenes Blatt
Wing eine Nachricht über ICQ schicken
Standard

Hallo,

erstmal zu a)

Seitens Windows wurde kein "schreibgeschützt" oder ähnliches draufgesetzt. Es handelt sich um ganz normale Ordner/Dateien, ohne dass etwas speziell an ihnen verändert wurde. Wenn es einen Schreibschutz gibt, dann ist er nur vorhanden weil es sich um eine USB-Festplatte handelt. Ob es sowas überhaupt gibt weiß ich ja eben nicht.

b) Was heißt denn genau dynamische Laufwerksbuchstaben? Generell hat ja ein externes Device immer dynamische Laufwerksbuchstaben. Allerdings solange sie gemounted sind, kann man sie doch ganz normal ansprechen, oder?

Ich mein das Verzeichnis auslesen funktioniert ja einwandfrei, nur eben der rename()-Befehl bricht ab. Ich kann auch eine temporäre Datei auf dem Laufwerk erstellen und verändern bzw. auch löschen.

c) Das verzeichnisübergreifende Kopieren wird in meinem Fall gar nicht ausgeführt. Rename() verändert nur den Dateinamen, nicht aber den Pfad. Auch wenn ich XAMPP von der USB-Platte aus starte und sozusagen partitionsintern zugreife, kommt der selbe Fehler.

Gruß
Wing
Wing ist offline  
Alt 15.07.2010, 21:47  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Dann machst DU vermutlich einfach irgendwo einen Fehler mit dem Pfad.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 15.07.2010, 22:21  
Benutzer
 
Registriert seit: 15.05.2007
Beiträge: 35
Wing ist zur Zeit noch ein unbeschriebenes Blatt
Wing eine Nachricht über ICQ schicken
Standard

Geht es denn bei dir?
Wing ist offline  
Alt 15.07.2010, 23:11  
Benutzer
 
Registriert seit: 15.05.2007
Beiträge: 35
Wing ist zur Zeit noch ein unbeschriebenes Blatt
Wing eine Nachricht über ICQ schicken
Standard

Ich hab nun ein paar Tests durchgeführt.

Habe meinen USB-Stick eingesteckt und versucht die Dateien auf der USB-Festplatte und dem Stick zu ändern. Habe dafür die Daten von der Platte auf den Stick geschoben.

Ergebnis: Auf dem Stick konnten alle Dateien ohne Probleme umbenannt werden.


Nach ein paar Tests ist mir dann aufgefallen, was der Grund sein könnte (und es auch sehr wahrscheinlich ist).

Wie auf dem Bild zu sehen, braucht man Administator-Rechte um die Dateien umzubenennen. Kopiere ich die Dateien auf den Stick, ist dieses Symbol nicht vorhanden. Erstellt man eine .txt Datei mit php und benennt diese anschließend um, so klappt das auf beiden Datenträgern. Eben da eine selbst erstellte Datei kein UAC-Zeichen hat.


Kann mir nun einer helfen, dieses Symbol zu entfernen? Gibt es da eine Möglichkeit in Windows 7?


PS: und nein es war kein Fehler in dem Pfad :P
Miniaturansicht angehängter Grafiken
funktion-rename-auf-usb-festplatten-bringt-fehler-unbenannt.png  
Wing ist offline  
Alt 15.07.2010, 23:17  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Unter welchem Nutzer laufen PHP/Webserver?
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
Alt 15.07.2010, 23:25  
Benutzer
 
Registriert seit: 15.05.2007
Beiträge: 35
Wing ist zur Zeit noch ein unbeschriebenes Blatt
Wing eine Nachricht über ICQ schicken
Standard

Falls du den Benutzer im Task-Manager meinst, dann läuft er ganz normal über meinen Logon-Namen. Dieser ist laut den Benutzerkonten ein Administrator - wobei ich eigentlich dachte, dass es seit WinVista keine Standard-Admins mehr gibt ?!
Wing ist offline  
Alt 15.07.2010, 23:34  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
PS: und nein es war kein Fehler in dem Pfad :P
Zitat:
a) Apache hat nicht die Rechte, auf das LW zuzugreifen
Zitat:
Es handelt sich um ganz normale Ordner/Dateien, ohne dass etwas speziell an ihnen verändert wurde.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 16.07.2010, 00:41  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.637
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Zitat von Wing Beitrag anzeigen
Falls du den Benutzer im Task-Manager meinst, dann läuft er ganz normal über meinen Logon-Namen. Dieser ist laut den Benutzerkonten ein Administrator - wobei ich eigentlich dachte, dass es seit WinVista keine Standard-Admins mehr gibt ?!
Beende mal Apache und starte ihn mit der Option "als Administrator ausführen".

Man kann es so ausdrücken das dein Konto zwar Adminrechte hat aber die Anwendungen nur wenn du ihnen diese gibst.

Alternative wäre die UAC zu deaktivieren. (siehe ggf. Google)

Oder du lässt Apache als Systemdienst starten.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Rekursive Funktion bricht ab... duras666 PHP Tipps 2008 9 28.04.2008 11:36
Name der aufrufenden Funktion mAy^daY PHP Tipps 2007 5 20.01.2007 22:55
Fehler in rekursiver Funktion tinchen PHP Tipps 2006 1 27.08.2006 20:24
fehler in einer funktion imported_master PHP Tipps 2006 3 08.04.2006 21:10
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
Fehlermeldung - aber kein fehler... Tschuu HTML, Usability und Barrierefreiheit 16 14.03.2005 15:56
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
rename() fehler PHP Tipps 2005 3 20.01.2005 18:40
[Erledigt] mysql fehler PHP Tipps 2004 2 03.11.2004 00:32
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
[Erledigt] sql syntax error in funktion, kann aber nix finden :( PHP Tipps 2004 10 20.07.2004 19:19
[Erledigt] Referenz auf Funktion übergeben PHP-Fortgeschrittene 7 20.07.2004 09:51
mysql_real_escape_string - Fehler Schaelle Datenbanken 0 03.07.2004 23:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php rename, usb platte umbenennen, php, fehler bei rename, kein recht zum ändern dateinamen usb netzplatte, festplatten umbenennen fehler admin rechte, php datei festplatte umbenennen, usb platte benennen administrator, php \lokaler server\ ausführen administrator rechte, keine rechte usb stick umbenennen, [function.rename]: no error in, php warum [function.rename]: no error in, unable to write/delete data on external usb disk in windows 7, windows 7 usb platte files umbenennen admin, admin rechte um ordner umzubenennen, usb dateiname nicht geändert, usb umbenenn ohne admin, braucht man admin rechte um den usb stick umbenennen, usb festplatte umbenennen, usb stick after rename bugged, rename schreibschutz

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:07 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum