我正在尝试检查文件是否存在,如果存在,请将其删除。由于一些奇怪的原因,检查文件返回true但它不会取消链接我的生活。这是我的代码。
if(file_exists(TEMPLATEPATH.'/uploads/'.$_POST['image_name'])) {
if (@unlink(TEMPLATEPATH.'/uploads/'.$_POST['image_name'])) {
echo "true";
} else {
echo "false";
}
} else {
echo "false";
}
*注意---没有@没有错误...... * note2 ---这是在带有wamp堆栈的localhost windows上,在你说这就是为什么它不起作用之前,我确认使用相同语法的另一个站点没有任何特殊权限。
感谢您的帮助!
答案 0 :(得分:11)
即使该文件存在,也并不意味着您有权删除它。
你应该remove the @
operator,这可能会导致潜在的错误 - 这可能非常有趣。
如果您不希望向用户显示错误消息,您应该:
display_errors
log_errors
和error_log
答案 1 :(得分:4)
好的我是个笨蛋,发现发布的变量名已经改变,应该是'image'而不是'image_name'....
很抱歉浪费你们的时间!
答案 2 :(得分:0)
@Rick:如果您取消警告抑制@
,PHP是否会返回拒绝访问错误消息?如果是这样,那就是问题所在。试试
if (file_exists(TEMPLATEPATH . '/uploads/' . $_POST['image_name'])) {
chmod(TEMPLATEPATH.'/uploads/'.$_POST['image_name']), 0755);
if (unlink(TEMPLATEPATH . '/uploads/' . $_POST['image_name'])) {
echo "true";
} else {
echo "false";
}
} else {
echo "false";
}
答案 3 :(得分:0)
正如其他人所说,您需要拥有适当的删除权限。具体来说,您需要写入权限。试试这个:
$filename = TEMPLATEPATH.'/uploads/'.$_POST['image_name'];
if(is_writable($filename)) {
unlink($filename)
} else {
// error handling. You can check which condition is failing here
}