我正在尝试修改插件,以便可以使用html链接删除目录中的图像文件。我的代码吐出一个表格,其中包含图片缩略图,图片链接以及删除文件的链接:
<?php
$dirname = "../wp-content/themes/teenclub/images/slider/";
$images = scandir($dirname);
$ignore = array(".", "..", ".DS_Store");
foreach($images as $curimg){
if(!in_array($curimg, $ignore)) {
echo "<tr ><td><img width='200' src='$dirname$curimg'/></td><td><a href='$dirname$curimg'/>$curimg</a></td><td><a href='../wp-content/plugins/wp-easy-uploader/delete.php?file=$curimg'>Delete</a></td></tr>";
};
}
?>
delete.php:
<?php
$dir = '/Users/edmcmanwich/Desktop/TEMP/dev.teenclub.com';
$file = $dir.'/'.$_GET["file"];
if(is_writable($file)) {
unlink($file);
} else {
echo 'you dont have perms dude';
}
?>
我收到消息说我没有权限,但是我将所有文件chmod到777.另外MAMP的php_error.log给我这个:
[01-Feb-2012 21:10:13] PHP Warning: unlink(../wp-content/themes/teenclub/images/slider/kids.png) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in /Users/edmcmanwich/Desktop/TEMP/dev.teenclub.com/wp-content/plugins/wp-easy-uploader/delete.php on line 4
目录和文件名是正确的,所以我只是不明白问题是什么......
答案 0 :(得分:0)
您必须将目录设置错误。
unlink
显示的文件位置为../wp-content/themes/teenclub/images/slider/kids.png
,但您的目录设置为/Users/edmcmanwich/Desktop/TEMP/dev.teenclub.com
。因此,您的完整路径应为/Users/edmcmanwich/Desktop/TEMP/dev.teenclub.com/../wp-content/themes/teenclub/images/slider/kids.png
(或根据您的来源/Users/edmcmanwich/Desktop/TEMP/dev.teenclub.com/kids.png
),根据您的错误消息情况并非如此。
运行echo getcwd();
以查看运行删除脚本的目录,您应该看到文件路径不正确。或者,该文件已被删除,因此不存在。
此外,这是非常不安全的,因为任何人都可以将他们想要的任何内容传递给$_GET['file']
并可能删除该文件。例如,如果您使用/etc/passwd
上的权限,则有人可以使用../../../../../../../../../../../../etc/passwd
将其删除。
答案 1 :(得分:0)