我正在使用php制作内部网客户经理,并将以下内容放在一起以删除客户帐户以及与该帐户关联的目录/文件。我遇到的问题是当你点击删除它正在从MYSQL DB中删除用户就好了,但由于某种原因没有删除目录,更糟糕的是它没有显示任何错误,它只是工作:-S。
<?php
$cfid = $_GET['token'];
mysql_query("DELETE FROM rok5g_chronoforms_data_editcustomer WHERE cf_id = $cfid") or die(mysql_error());
$dir = '/customer-files/$cfid/';
//Delete folder function
function deleteDirectory($dir) {
if (!file_exists($dir)) return true;
if (!is_dir($dir) || is_link($dir)) return unlink($dir);
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') continue;
if (!deleteDirectory($dir . "/" . $item)) {
chmod($dir . "/" . $item, 0777);
if (!deleteDirectory($dir . "/" . $item)) return false;
};
}
return rmdir($dir);
}
?>
答案 0 :(得分:3)
这不起作用。
$dir = '/customer-files/$cfid/';
必须是双引号
$dir = "/customer-files/$cfid/";
在此处阅读更多相关信息 - http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single
注意 - 这实际上是假设您在某个时刻调用方法deleteDirectory($dir)
。
另外,我建议你阅读SQL注入(如果你还没有)。使用当前设置,您的脚本可能会被破坏并且数据库很容易受到损害。
答案 1 :(得分:0)
首先检查你是否在php config中打开了错误。
再次检查您的服务器是否有权删除此文件夹及其中的文件。如果由于缺少权限chmod而无法执行rmdir($ dir)($ dir。“/”。$ item,0777);也可能会失败。
答案 2 :(得分:0)
好的,最后我使用以下&gt;&gt;
开始工作 <?php
$cfid = $_GET['token'];
mysql_query("DELETE FROM rok5g_chronoforms_data_editcustomer WHERE cf_id = $cfid") or die(mysql_error());
define('PATH', "./customer-files/$cfid/");
function destroy($dir) {
$mydir = opendir($dir);
while(false !== ($file = readdir($mydir))) {
if($file != "." && $file != "..") {
chmod($dir.$file, 0777);
if(is_dir($dir.$file)) {
chdir('.');
destroy($dir.$file.'/');
rmdir($dir.$file) or DIE("couldn't delete $dir$file<br />");
}
else
unlink($dir.$file) or DIE("couldn't delete $dir$file<br />");
}
}
closedir($mydir);
rmdir("$dir");
}
destroy(PATH);
echo 'all done.';
?>