我在从更高的目录中删除文件时遇到问题,我发现这篇帖子并尝试了但没有运气....:
2008年9月25日,来自gmail dot com的getdalife 02:04对任何有问题的人 权限被拒绝错误,它是 有时会在你尝试时引起 删除文件夹中的文件 在您的层次结构中更高 工作目录(即尝试时 删除以“../”)开头的路径。
所以要解决这个问题,你 可以使用chdir()来改变工作 目录到文件所在的文件夹 你要取消链接的位置。
<?php
> $old = getcwd(); // Save the current directory
> chdir($path_to_file);
> unlink($filename);
> chdir($old); // Restore the old working directory ?>
这是我目前的代码:
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>';
}
}
我收到错误消息:
警告:unlink()[function.unlink]: 没有错误 j:\ XAMPP \ htdocs中\掩体\ ADMIN \ delete_file.php 第37行
第37行:
unlink($filename);
任何人都可以看到我做错了吗?
答案 0 :(得分:2)
我总是使用绝对文件路径名。
我在你的配置中将filedir定义为常量,然后连接以便你有一个绝对文件路径,然后调用unlink()。
顺便说一下:我希望你知道你的代码高度不安全。答案 1 :(得分:0)
见这里:
http://bugs.php.net/bug.php?id=43511
在这里
http://php.bigresource.com/Track-php-03TimDKO/
http://www.phpbuilder.com/board/showthread.php?t=10357994
虽然根据上面的评论,我不建议这样做。是否有选择不同的方法?