Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;“取消链接”;在本地Wordpress实例上不工作?_Php_Wordpress_File Permissions_Unlink - Fatal编程技术网

Php &引用;“取消链接”;在本地Wordpress实例上不工作?

Php &引用;“取消链接”;在本地Wordpress实例上不工作?,php,wordpress,file-permissions,unlink,Php,Wordpress,File Permissions,Unlink,我正在尝试修改一个插件,以便使用html链接删除目录中的图像文件。我的代码弹出一个表,其中包含图像缩略图、图像链接和删除文件的链接: <?php $dirname = "../wp-content/themes/teenclub/images/slider/"; $images = scandir($dirname); $ignore = array(".", "..

我正在尝试修改一个插件,以便使用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';
}
?>

我收到消息说我没有权限,但我已将所有文件复制到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
[01-Feb-2012 21:10:13]PHP警告:取消链接(../wp-content/themes/teenclub/images/slider/kids.png)[]:第4行的/Users/edmcmanwich/Desktop/TEMP/dev.teenclub.com/wp-content/plugins/wp-easy-uploader/delete.PHP中没有这样的文件或目录

目录和文件名是正确的,所以我不明白问题出在哪里…

您的目录一定是错的

取消链接
显示
。/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()
要查看删除脚本在哪个目录下运行,您应该看到文件路径不正确。或者,该文件已被删除,因此不存在


而且,这是非常不安全的,因为任何人都可以传递他们想要的任何东西
$\u获取['file']
,并可能删除该文件。例如,如果您使用了
/etc/passwd
上的权限,有人可以使用
删除它。/../../../../../../../../../../../../../../../../../../etc/passwd
好吧,您已经知道这是一种不好的做法,但是您遇到的问题很可能涉及使用相对路径

尝试将文件路径包装为 看看这是否能解决问题。还要注意,如果使用空参数调用
realpath
,它将返回您肯定不想删除的当前目录


有关更多信息,请参阅和协议的文档。

哦,天哪。永远不要用GET请求删除文件。只是为了增加理由,这几乎打破了我所知道的所有最佳实践。对于有副作用的操作,永远不要使用GET。有关更多信息,请参见
约定,GET和HEAD方法不应具有除检索以外的其他操作的重要性
好吧,我知道这不是一种非常安全的方法。你们能给我指出一个更合适的方向吗?一个通过JavaScript和XSS预防的POST请求。