$ zip функции переименования не работают в PHP - PullRequest
1 голос
/ 20 января 2011

Я извлекаю zip-файл в PHP и пытаюсь переименовать его в content.txt. Вот мой код:

    if($this->copyFile($this->src,$this->dest)) {
        $this->log .= "Successfully copied the file. Starting unzip.<br />";
        $res = $this->zip->open($this->dest);
        if ($res === TRUE) {
            $this->zip->extractTo("/htdocs/content-refresh/");
            $this->extracted = $this->zip->getNameIndex(0);
            $this->log .= "Extracted ".$this->extracted." onto our server.<br />";
            if($this->zip->renameIndex(0,'content.txt')) {
                $this->log .= "Renamed update file to content.txt.<br />";
            } else {
                $this->log .= "Could not rename update file to content.txt.<br />";
            }
            $this->zip->close();
            $this->log .= "The update file is ready to go. Now you can use the update functions.<br />";
        } else {
            $this->log .= "Could not unzip the file.<br />";
        }
    }

Вот файл вывода:

Successfully copied the file. Starting unzip.

Extracted Hotel_All_Active 01-19-11.txt onto our server.

Renamed update file to content.txt.

The update file is ready to go. Now you can use the update functions.

Проблема в том, что он не переименовывает файл. Я также попробовал:

$this->zip->renameName(strval($this->extracted),'content.txt')

Но это также распечатывает, что это переименовало файл, но не делает. Я что-то здесь не так делаю, или эта функция глючит?

1 Ответ

3 голосов
/ 20 января 2011

Функция renameIndex() предназначена для переименования файла внутри архива.

Глядя на код в руководстве по PHP для этой функции, вы видите, что он изменяет архив:

$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
    $zip->renameIndex(2,'newname.txt');
    $zip->close();
} else {
    echo 'failed, code:' . $res;
}

Вместо этого вам нужно использовать функцию rename().

...