Das Löschen von Dateien in höheren Verzeichnis
-
10-10-2019 - |
Frage
Ich habe Probleme, eine Datei von einem höheren Verzeichnis zu löschen, fand ich diesen Beitrag und versuchte, es aber kein Glück ....:
gotdalife bei gmail dot com 25-Sep-2008 2.04
Für jeden, der ein Problem mit der gehabt hat Berechtigungsfehler verweigert, es ist manchmal verursacht, wenn Sie versuchen, Löschen einer Datei, die in einem Ordner ist in der Hierarchie höher zu Ihrem Arbeitsverzeichnis (das heißt, wenn sie versuchen zu löscht einen Pfad, der beginnt mit“../").
So, dieses Problem zu umgehen, können Sie kann chdir () verwenden, um die Funktion zu ändern Verzeichnis in den Ordner, in dem die Datei Sie wollen unlink befindet.
<?php
> $old = getcwd(); // Save the current directory
> chdir($path_to_file);
> unlink($filename);
> chdir($old); // Restore the old working directory ?>
Hier ist der Code, dass ich derzeit haben:
session_start();
if (!isset($_SESSION['agent']) OR ($_SESSION['agent'] !=md5($_SERVER['HTTP_USER_AGENT']))){
require_once ('includes/login_functions.inc.php');
$url = absolute_url();
header("Location: $url");
exit();
}
$folder = $_GET['folder'];
$filename = $_GET['name'];
$path = "../gallery/photos/$folder";
if (isset($_POST['submitted'])) {
if ($_POST['sure'] == 'Yes') {
$old = getcwd(); // Save the current directory
chdir($path);
unlink($filename);
chdir($old); // Restore the old working directory
}
else{
echo '<p>The photo has NOT been deleted.</p>';
}
}
Ich erhalte die Fehlermeldung:
Achtung: unlink () [function.unlink]: Kein Fehler in J: \ xampp \ htdocs \ Bunker \ admin \ delete_file.php on line 37
Zeile 37 sein:
unlink($filename);
Kann jemand sehen, was ich falsch gemacht habe?
Lösung
Ich benutze immer absolute Filepath Namen.
Ich würde die filedir als Konstante in der Config definiert, dann verketten, so dass Sie einen absoluten Dateipfad haben, dann einen Anruf zu unlink machen ().
Btw:. Ich hoffe, Sie wissen, dass Ihr Code ist hoch unsicher
Andere Tipps
Siehe hier:
http://bugs.php.net/bug.php?id=43511
und hier
http://php.bigresource.com/Track-php-03TimDKO/
http://www.phpbuilder.com/board/showthread.php? t = 10357994
Obwohl ich würde nicht diese empfehle,, gemäß den obigen Ausführungen. Gibt es die Möglichkeit, einen anderen Ansatz?