我在解压缩服务器时删除目录时遇到问题。
我已将file.zip上传到服务器,然后创建了一个名为“ en ”的文件,将其权限 777 提取,然后将file.zip的内容解压缩到“ en ”,没关系。 问题是,我现在无法删除“ en ”下的任何文件,但重命名似乎工作正常。我能够将“en”重命名为“delete_me”并能够重命名 它也是次级目录。
如果我尝试删除“delete_me”下的单个文件,例如index.html,我会得到
Command: DELE index.html
Response: 550 index.html: Permission denied
当我尝试通过FTP删除“delete_me” - FileZilla时,它会在dir内部开始循环,并为每个文件显示此消息:
Response: 150 Opening BINARY mode data connection for MLSD
Response: 226 Transfer complete
Status: Directory listing successful
Command: DELE index.html
Response: 550 index.html: Permission denied
Command: CWD /httpdocs/_delete_me
Response: 250 CWD command successful
当我检查(所有者/团体)时,我发现它是(48/48),而我创建的其他目录或文件(10618/2524)。
我尝试通过主机控制面板文件管理器进行访问,然后发现(用户/组)“delete_me”中的文件夹是( apache / apache ,而对于我的文件( / psacln )
当我尝试从主机控制面板删除文件时,我得到了
Error: Unable to remove file /httpdocs/_delete_me// var/www/vhosts/<hostname>/httpdocs/_delete_me/tmp: filemng failed: rm: cannot remove `/var/www/vhosts/<hostname>/httpdocs/_delete_me/tmp/index.html': Permission denied
filemng: Error occured during /bin/rm command.
最后,我尝试更改权限@chmod($dirPath, 0777);
并删除rmdir($dirPath);
或unlink($file);
,但没有结果。
与我的问题类似的唯一资源就是这里(Forum Question),但似乎没有回答(提供的答案链接不再可用)。
**那么,如何删除文件? **
答案 0 :(得分:1)
你必须chmod该目录中的所有内容。
试试这个
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathname));
$filemode = "0777"; // Set the permission
// Foreach item found set the permissions
foreach($iterator as $item) {
chmod($item, $filemode);
}
如果您要执行rmdir($dirPath);
请务必先从目录中删除所有文件,否则我相信它将无法删除该目录。
当然,一旦将权限设置为正确的权限,使用unlink($filepath);
删除文件就可以了。