使用 PHP 脚本实现网站文件或目录在线打包压缩

键盘旁的猫
键盘旁的猫
发布时间:2026-10-14| 2人浏览过
原创

本文介绍如何通过编写一段完整的 PHP 代码,在本地或服务器环境中创建一个安全的在线文件打包工具。它解决了手动整理网站目录、剔除不需要文件或文件夹的繁琐操作,能够一键将选定的文件或整个目录结构压缩为标准的 .zip 格式。

结果与目标

本方案的目标是提供一个无需额外依赖库(如 PclZip),仅使用 PHP 内置函数即可运行的独立脚本。运行后,用户将获得一个具备以下功能的网页:

  1. 安全登录:防止未授权访问。
  2. 交互式选择:列出当前目录下的所有文件及子目录供勾选。
  3. 高级控制:支持排除干扰性目录(如日志、缓存)。
  4. 即时打包:在内存中处理文件流并下载生成的 ZIP 包。

准备条件

  • 运行环境:任何支持 php 解释器的 Web 服务器(如 Apache, Nginx)或本地开发环境(XAMPP, WAMP)。
  • 权限:该脚本所在目录需要拥有“写入”权限,因为程序会在同级目录下创建临时的 ZIP 文件。
  • 基础知识:了解基本的文件路径概念及如何编辑 TXT/HTML 后缀为 .php 的文件。

第 1 步:获取并保存基础脚本文件

目的:获取包含前端界面与后端逻辑的核心代码。

操作:

  1. 新建一个文本文件,将其重命名为 zip_manager.php(名称自定,但必须含 .php 后缀)。
  2. 打开文件并将下方提供的完整代码块粘贴进去。
  3. 关键修改:找到代码首部的 $password 变量,修改为你想要的复杂字符串,以保障访问安全。
<?php
// URL参数 pwd 对应的访问密码
$password = '8baa717e6265d1c1d762cc896151f821'; // l23 示例,建议修改为随机字符串
?>

第 2 步:上传并启动管理入口

目的:在服务器上激活该程序。

操作:

  1. 将 zip_manager.php 上传到你想打包的文件所在的根目录(例如网站的 public_html 或直接放在要备份的文件夹内)。
  2. 在浏览器地址栏输入该文件的网址,例如:http://your-domain.com/backup_folder/zip_manager.php。
  3. 页面加载后,你会看到一个登录框。输入你刚才设定的 $password 点击“进入”。如果密码错误,将无法继续。

第 3 步:选择与配置压缩项

目的:精准指定哪些内容需要被打包。

操作:

  1. 查看文件列表:登录后,系统会自动扫描当前文件夹。页面会以复选框形式列出所有文件和子目录。
  2. 勾选项目:根据需要勾选文件。通常为了排除干扰,建议不要勾选数据库配置文件、临时文件等。
  3. 设置排除项:在顶部输入框填写“要排除的目录(相对路径,逗号分隔)”。例如,如果要排除名为 logs 和 cache 的文件夹,即使你勾了父目录,这两者也不会被加入压缩包。
  4. 调整输出设置:
    • 保存到目录:默认留空表示在当前目录生成文件。如需存到上级目录,可填 ../(需确认有写入权限)。
    • 压缩文件名称:系统会默认生成类似 backup_8f7a.zip 的名称,你可以改为 site_backup.zip 以便识别。

第 4 步:执行压缩并验证结果

目的:完成数据处理并获取最终的归档文件。

操作:

  1. 点击“开始压缩”按钮。此时页面无刷新,下方显示“正在添加压缩文件...”,同时列出每个处理的文件路径。
  2. 完成判断:当提示出现“压缩完成,共添加 X 个文件”以及一个蓝色的超链接时,说明任务成功。
  3. 下载验证:点击超链接下载生成的 .zip 文件。打开压缩包,检查是否保留了原始的文件夹层级结构(即双击 dir/file.php 仍能展开看到正确的层次)。如果发现遗漏或多余,可重新调整排除规则再次执行。

原理与技术细节

该脚本并未调用系统的命令行工具(如 Linux 的 zip 命令)或 PECL 扩展,而是通过 PHP 原生实现了 ZIP 协议规范:

  • 数据头构造:类 PHPzip 中的 addfile 方法通过拼接二进制字节流(如 \x50\x4b\x03\x04 等 PKZIP 签名)来模拟标准的 ZIP 文件格式。
  • 时间戳转换:使用了 unix2DosTime 将 UNIX 时间戳转换为 DOS 格式的时间字段,这是标准 ZIP 存档必须的属性之一。
  • 目录遍历:利用递归函数 listfiles 深入子目录读取内容,同时通过正则和数组比对过滤掉指定的排除项。

简要总结

以上就是使用纯 PHP 脚本实现网站文件在线打包并压缩为 zip 的详细内容。该方法适用于中小型项目的快速备份、临时文件整理以及无法安装第三方组件的轻量级服务器环境。更多关于 PHP 自动化运维的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。