取消链接时权限被拒绝警告

时间:2015-07-31 08:32:47

标签: php unlink readdir

我正在尝试使用下拉列表选择删除文件。我收到错误'未定义索引“文件”'和取消链接时权限被拒绝警告。

<?php
$dirname = $_SERVER['DOCUMENT_ROOT']."myphp/project/userdir/neeraj/";
$dir = opendir($dirname);
echo '<form action="delete.php" method="get">';
echo '<select name="file2">';
while(false != ($file = readdir($dir)))
{
    if(($file != ".") and ($file != ".."))
    {
        echo "<option value=".$file.">$file</option>";
    }
}
echo '</select>';
echo '<input type="submit" value="Delete" class="submit" />';
echo '</form>';?>  

            <?php
$dirpath = $_SERVER['DOCUMENT_ROOT']."myphp/project/userdir/neeraj/";
$file_to_delete = $_GET['file2'];
if ( unlink ($dirpath.'/'.$file_to_delete) ) {
    echo $file_to_delete . " deleted.";
} else {
    echo "Error.";
}
?>

2 个答案:

答案 0 :(得分:0)

请注意,您的$dirpath/结尾,之后您尝试取消关联:

unlink ($dirpath.'/'.$file_to_delete)

所以它实际上是这样的(注意双斜线):

[...] myphp/project/userdir/neeraj//$file_to_delete [...]

您应检查文件权限,以确保脚本有权取消文件链接:
https://en.wikipedia.org/wiki/File_system_permissions

答案 1 :(得分:0)

我猜您会收到第一个错误,因为您不会将代码包装为仅在表单提交时执行。将代码的第二部分更改为:

<?php
if(isset($_GET['file2'])){ //i have posted my form
    $dirpath = $_SERVER['DOCUMENT_ROOT']."myphp/project/userdir/neeraj/";
    $file_to_delete = $_GET['file2'];
    if ( unlink ($dirpath.'/'.$file_to_delete) ) {
       echo $file_to_delete . " deleted.";
    } else {
       echo "Error.";
    }
}
?>

另一个错误与apache用户在您存储文件的目录中能够访问和删除有关。