当我尝试使用unlink()时,我得到Permission denied warning .
我已经创建了一个函数来从内容目录中删除图像:
function del($fnam){
chmod('content/'.$fnam, 0777);
chown('content/'.$fnam,465);
unlink('content/'.$fnam);
}
我已经使用chmod()和chown()从论坛阅读后,我仍然得到警告和图像没有被删除。
当我在不同的地方调用它时,它是如何运行的魅力。
if($temp2==1){ //For Delete
$sql="delete from blog where b_id=$temp1";
$im=fetch('blog','b_img','b_id='.$temp1);
//Deleting Image
del($im);
}
上面的代码不是在任何函数中(运行过程方式),这给了我积极的回应。如何解决这个问题?
在这种情况下,你不能用php删除文件,因为php没有足够的权限。如果你不能从上面更改权限,尝试使用FTP(我知道这并不常见,但它可以帮助你在个人使用)
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// try to delete $file
if (ftp_delete($conn_id, $file)) {
echo "$file deleted successful'n";
} else {
echo "could not delete $file'n";
}
不幸的是,您的代码假设chmod
和chown
将始终工作,这是一个糟糕的假设。
如果你没有正确的权限,它们也会失败。
像这样修改代码,它应该会告诉你到底是哪位出了问题
function del($fnam){
if ( ! chmod('content/'.$fnam, 0777) ) {
echo 'chmod failed';
}
if ( ! chown('content/'.$fnam,465) ) {
echo 'chown failed';
}
if ( ! unlink('content/'.$fnam) ) {
echo 'unlink failed';
}
}
您没有得到预期的结果,因为:
根据手册选择:
尝试将文件文件名的所有者更改为user user。只有超级用户可以修改文件的所有者。
只有当你的应用程序以root身份运行时,它才会工作,我敢肯定这不是情况。
根据手册chmod:
尝试将指定文件的模式更改为mode中给定的模式。
基本上,如果你没有正确的权限,chmod和unlink将不起作用。
尝试更改内容目录的权限
function del($fnam){
chmod('content/, 0777);
unlink('content/'.$fnam);
}