Korzystanie z funkcji zip w PHP bez exec
Na naszych serwerach funkcja PHP exec jest wyłączona, zob. Bezpieczeństwo PHP: wyłączone funkcje. Nie mogą więc Państwo wywoływać programów zip i unzip zainstalowanych na serwerze. Nie jest to jednak konieczne: PHP posiada własną klasę ZipArchive. Za jej pomocą można tworzyć pliki zip i je rozpakowywać.
Tworzenie pliku zip
Prosimy zapisać poniższy kod jako testzip.php, na przykład w katalogu public_html, a następnie otworzyć plik w przeglądarce:
<?php
$zip = new ZipArchive();
$bestand = __DIR__ . '/test.zip';
if ($zip->open($bestand, ZipArchive::CREATE) !== true) {
exit("Het lukt niet om $bestand te openen. Heeft de map schrijfrechten?");
}
$zip->addFile(__DIR__ . '/testzip.php', 'testzip.php');
echo 'Aantal bestanden in de zip: ' . $zip->numFiles;
$zip->close();
Rozpakowywanie pliku zip
<?php
$zip = new ZipArchive();
if ($zip->open(__DIR__ . '/test.zip') === true) {
$zip->extractTo(__DIR__ . '/uitgepakt');
$zip->close();
echo 'Uitgepakt';
} else {
echo 'Het zip-bestand kon niet worden geopend';
}
Nie działa? Prosimy sprawdzić w Select PHP version, czy rozszerzenie zip jest włączone. Po zakończeniu prosimy usunąć skrypt testowy.
Chcą Państwo jedynie rozpakować plik zip, który został przez Państwa przesłany? Można to zrobić również bez kodu w Menedżerze plików, zob. Chcę przesłać i rozpakować plik zip.
Szczegółowe wyjaśnienie ze zrzutami ekranu: Włączanie i wyłączanie rozszerzeń PHP w instrukcji DirectAdmin.
