我正在尝试使用下拉列表选择删除文件。我收到错误'未定义索引“文件”'和取消链接时权限被拒绝警告。
<?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.";
}
?>
答案 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用户在您存储文件的目录中能够访问和删除有关。