2016-06-03 3 views
-4

Ich habe eine Webanwendung mit einem Dateibrowser erstellt. Ich versuche, eine Funktionalität hinzuzufügen, wo der Benutzer die chmod/Berechtigungen über eine Ajax-Anfrage ändern kann, die über PHP auf dem Back-End behandelt wird.PHP: Warum setzt chmod() meine Datei/Ordner auf 555 oder 444?

:

Also zunächst (Seite Anmerkung ich mein lokal mit WAMP laufen), lese ich die Berechtigungen mit diesem

substr(sprintf('%o', fileperms($relativePath)), -4) 

dieses Format zu erhalten (0777, 0644, usw.), wenn nicht, gibt es etwas wie 32726 zurück. Diese Information wird verwendet, um auf der Benutzeroberfläche angezeigt zu werden, damit der Benutzer weiß, was aktuell ist.

Allerdings, wenn ich das Skript ausführen, setze ich es auf 0777 und es scheint zu laufen gut. Aber wenn ich die Datei erneut lese, gibt es 0555 oder 0444 zurück. Wer weiß, was ich vermisse?

+0

Was hat das mit Javascript zu tun? –

+0

Ich habe JavaScript hinzugefügt, weil ich das für die Anfrage verwende. Wenn jemand das gleiche Setup hatte, würde es beim Suchen helfen. – SReca

Antwort

0

Ich erkennen dies war kein Problem, sondern der chmod Befehl funktioniert nicht ordnungsgemäß auf einem Windows/Apache-Setup.

0

Besitzt Ihr Webserver die Dateien, für die er versucht, die Berechtigungen zu ändern? Sie können überprüfen, ob chmod korrekt ausgeführt wurde oder fehlgeschlagen ist, indem Sie seinen Rückgabewert testen. Es wird FALSE zurückgegeben, wenn der Webserver keine Berechtigungen hatte. Für weitere Informationen können Sie lesen: http://php.net/manual/en/function.chmod.php

<?php 

$is_success = chmod("myfile.pdf", 777); 
if($is_sucess) { 
    echo "success<br />\n"; 
} 
+0

Ich habe eigentlich eine sehr ähnliche Einstellung auf dem PHP-Ende ... Das Problem ist nicht, ob es erfolgreich ist oder nicht, sondern, sobald ich die Anfrage von Ändern Dauerwelle auf 777 und lesen Sie die Datei erneut mit dem Code-Snippet, das ich zur Verfügung gestellt oben gibt es 555 oder 444 zurück. – SReca

Verwandte Themen