%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
<?php
/**
* make-zip.php — Bungkus isi `_deploy/` menjadi `_upload/deploy.zip`.
*
* PENTING: memakai PHP ZipArchive agar path memakai '/' (forward slash) sesuai
* standar ZIP → kompatibel diekstrak di server Linux (mis. InfinityFree).
* JANGAN pakai PowerShell Compress-Archive (PS 5.1 menulis '\' → rusak di Linux).
*
* Jalankan (setelah `npm run build:deploy`): php scripts/make-zip.php
*/
$root = dirname(__DIR__);
$src = $root . '/_deploy';
$outDir = $root . '/_upload';
$out = $outDir . '/deploy.zip';
if (!is_dir($src)) {
fwrite(STDERR, "Folder _deploy/ belum ada. Jalankan dulu: npm run build:deploy\n");
exit(1);
}
if (!is_dir($outDir) && !mkdir($outDir, 0777, true)) {
fwrite(STDERR, "Gagal membuat folder _upload/\n");
exit(1);
}
@unlink($out);
$zip = new ZipArchive();
if ($zip->open($out, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== true) {
fwrite(STDERR, "Gagal membuat deploy.zip\n");
exit(1);
}
$srcNorm = str_replace('\\', '/', $src);
$it = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($src, FilesystemIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST
);
$files = 0;
foreach ($it as $item) {
$abs = str_replace('\\', '/', $item->getPathname());
$rel = ltrim(substr($abs, strlen($srcNorm)), '/'); // path relatif, forward slash
if ($item->isDir()) {
$zip->addEmptyDir($rel);
} else {
$zip->addFile($abs, $rel);
$files++;
}
}
$zip->close();
printf("deploy.zip dibuat: %d berkas, %.1f MB\n -> %s\n", $files, filesize($out) / 1048576, $out);