ОБНОВИТЬ: Смущающая причина, по которой это «не работает», была основана на том факте, что я смотрел не на тот каталог.
Мне нужно отменить связь / удалить все файлы в папке. Чтобы добиться этого, я изменил метод, который я нашел здесь, на SO:
public function deleteDirContent($dirPath)
{
if (!is_dir($dirPath))
{
throw new InvalidArgumentException("$dirPath must be a directory");
}
if (substr($dirPath, strlen($dirPath) - 1, 1) != '/')
{
$dirPath .= '/';
}
$files = glob($dirPath . '*', GLOB_MARK);
foreach ($files as $file)
{
if (is_dir($file))
{
$this->deleteDirContent($file);
}
else
{
print_r($file);
if(unlink($file))
{
echo " - SUCCESS";
}
else
{
echo " - ERROR !";
}
echo PHP_EOL;
}
}
}
Метод отлично работает для всех файлов, кроме *.zip
файлы, как кажется. И что еще страннее в этом: unlink()
по-прежнему возвращает истину без удаления файла.
Возможно, проблема связана с моей версией PHP и / или тем, что она работает на Windows Server.
Соответствующие спецификации:
Версия PHP: 5.3.1
Версия XAMPP: XAMPP-win32-1.7.3
ОПЕРАЦИОННЫЕ СИСТЕМЫ: Windows 2008 Server
Любая помощь будет оценена.
Попробуйте изменить разрешения с помощью CHMOD:
// Read and write for owner, nothing for everybody else
chmod("/somedir/somefile", 0600);
Смущающая причина, по которой это «не работает», была основана на том факте, что я смотрел не на тот каталог.