Warum erhalte ich „Zugriff verweigert“ in PHP, wenn ein Verzeichnis zu umbenennen versuchen?

StackOverflow https://stackoverflow.com/questions/196114

  •  10-07-2019
  •  | 
  •  

Frage

I chmod'ed das Verzeichnis auf 777, das gleiche mit dem Verzeichnisinhalt. Trotzdem bekomme ich eine Fehlermeldung „Zugriff verweigert“. Hat werfen PHP diese Fehler, wenn Apache ist nicht die Gruppe / Besitzer, unabhängig von den Dateiberechtigungen? Hier ist der Anruf, der hat versagt:

rename('/correct/path/to/dir/1', '/correct/path/to/dir/2');
War es hilfreich?

Lösung

Sie bearbeiten die höhere Ebene Verzeichnis, so dass der PHP-Benutzer Schreibzugriff auf das Verzeichnis haben muss.

Andere Tipps

Das ist wahrscheinlich, weil Apache ist nicht Eigentümer des übergeordneten Verzeichnisses. Umbenennen (oder bewegt) eine Datei im Grunde das Gleiche ist wie eine neue Datei zu erstellen.

zu klären, kann PHP nur umbenennen Verzeichnisse es tatsächlich Eigentum über hat:

-rwxrwxrwx user   user   temp/
-rwxr-xr-x apache apache temp2/
-rw-r--r-- user   user   script.php

übernehmen script.php versucht, diese beiden Verzeichnisse umbenennen:

// this operation fails as PHP (running as apache) does not own "temp",
// despite having write permissions    
rename('temp', 'temp.bak');

// this operation is successful as PHP owns "temp2"
rename('temp2, 'temp.bak'); 

Versuchen Sie das folgende Skript ausgeführt wird:

print_r(posix_getpwuid(getmyuid()));
print_r(pathinfo($YOUR_PATH));

Und sehen, was das gibt.

Eine andere Sache, die diese Art von Situationen helfen könnte, ist tatsächlich senken Berechtigungen zu versuchen. Ich habe Gelegenheiten gesehen, wo Apache eine Anwendung die Erlaubnis verweigert, etwas zu tun, weil seine Berechtigungen zu setzen sind hoch . Meine Vermutung ist, dass dies eine gute Sicherheit Praxis zu fördern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top