繁体   English   中英

权限被拒绝警告取消链接

[英]Permission denied warning on unlink

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

<?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.";
}
?>

请注意,您的$dirpath/结尾,稍后您尝试取消链接:

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

所以实际上得到了这样的内容(请注意双斜杠):

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

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

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

<?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用户有关,该用户是否能够访问和删除您存储文件的目录中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM