我正在尝试从我的服务器目录中删除一个文件夹。它包含一个图像。文件系统的工作方式类似于:'www / comics / 0 / page1.jpg',其中我想要消除'0'。 (www是所有PHP站点脚本所在的根目录)。我也试图从数据库中删除漫画。漫画被任何标有其comicID作为外键的页面引用。
我的问题是如何取消链接/删除来实际完成他们的工作。目前,该网站在运行时没有出现任何错误,并且正确地遍历页面,但无法删除任何内容。应该注意的是,我可以删除没有问题的单个页面。
几点说明:
代码:
<?php
session_start();
if(isset($_POST['btnEdit']))
{
$_SESSION['comicID'] = $_POST['comicsList'];
}
if(isset($_POST['btnDelete']))
{
$_SESSION['comicID'] = $_POST['comicsList'];
$setComic = $_SESSION['comicID'];
include_once('includes/conn.inc.php');
unlink(comics/$setComic);
mysqli_query($conn, "DELETE FROM comic WHERE comicID = '$setComic'");
mysqli_close($conn);
header('Location: myComics.php');
}
?>
答案 0 :(得分:1)
这是您需要使用的逻辑:
$image = "file.jpg";
$setComic = "0";
unlink("comics/$setComic/$image");
rmdir("comics/$setComic");
&#34;您首先需要删除所有文件(或所选文件),然后删除该文件夹。 unlink并未同时执行这两项操作。&#34;
从http://www.paulund.co.uk/php-delete-directory-and-files-in-directory
拉出来删除所有文件后,可以使用rmdir函数删除目录。
<?php
function delete_directory($dirname) {
if (is_dir($dirname))
$dir_handle = opendir($dirname);
if (!$dir_handle)
return false;
while($file = readdir($dir_handle)) {
if ($file != "." && $file != "..") {
if (!is_dir($dirname."/".$file))
unlink($dirname."/".$file);
else
delete_directory($dirname.'/'.$file);
}
}
closedir($dir_handle);
rmdir($dirname);
return true;
}
?>
清洁版作者:Lewis Cowles
在看到这个PHP片段后,刘易斯离开并通过将代码减少到只有9行代码来改进代码。当人们使用这些片段并对其进行改进时,这非常有用,因为它可以帮助每个人更多地了解代码。
这是刘易斯能够提出的片段。
<?php
/*
* php delete function that deals with directories recursively
*/
function delete_files($target) {
if(is_dir($target)){
$files = glob( $target . '*', GLOB_MARK ); //GLOB_MARK adds a slash to directories returned
foreach( $files as $file )
{
delete_files( $file );
}
rmdir( $target );
} elseif(is_file($target)) {
unlink( $target );
}
}
?>
然后进行调试/故障排除:
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告应仅在暂存时完成,而不是生产。
以及or die(mysqli_error($conn))
到mysqli_query()
答案 1 :(得分:0)
尝试提供正确的文件路径,如
unlink('comics/'.$setComic); // use path with quote and concat php var to path
答案 2 :(得分:0)
需要纠正这条线:
unlink(comics/$setComic);
要:
unlink('comics/'.$setComic);
另外,检查图像/comics/
的路径是否正确。