3445 字
9 分钟
免费虚拟主机不是小 VPS:从 1GB 配额拆解 PHP 网站的真实边界

先把“免费”还原成产品模型#

NodeLoc 上出现的“白嫖一年虚拟主机”只是选题线索,不能直接证明服务质量、持续时间或适用场景。能够核验的事实来自 MatrixIDC 产品页:该产品被定义为“免费虚拟主机”,标注为 1G 套餐,网站和 FTP 空间为 1024 MB,数据库空间为 0 MB,数据库数量为 1 个,可绑定域名 5 个,FTP 用户 5 个,PHP 版本为 8.2 至 8.4,运行环境是 Nginx + PHP-FPM,并明确写着“不提供邮件服务”。页面同时显示年付价格为 1 元,而不是无条件承诺永久免费。

这些字段已经足够说明一个关键事实:它不是一台缩小版 VPS,而是一项共享式网站托管产品。你得到的是一个被运营商预先配置好的应用运行环境,而不是一台可以自行安装软件、管理系统用户、调整防火墙或修改 Web 服务器配置的主机。

这个区别会直接改变部署思路。在 VPS 上,通常先考虑操作系统、监听端口、反向代理、数据库、备份和进程守护;在虚拟主机上,第一步则应该是确认应用是否能在既定的 Nginx + PHP-FPM 环境中工作,以及它是否能在没有独立数据库空间的情况下运行。价格只是表象,真正的产品边界藏在“谁负责哪一层”里。

Nginx + PHP-FPM 代表了什么#

Nginx 和 PHP-FPM 的组合并不等于“功能少”,而是把请求处理拆成两个层次:Nginx 负责接收 HTTP 请求、匹配静态文件和转发动态请求;PHP-FPM 负责执行 PHP 脚本。虚拟主机平台通常会统一管理这两部分,用户通过上传网站文件、选择 PHP 版本或配置域名来使用它们。

因此,适合这类服务的项目通常具备几个特征:代码以 PHP 为主,依赖标准 Web 请求,不需要长期运行的后台进程,不要求自行安装系统扩展,也不依赖独立的消息队列或容器编排。个人博客、简单 CMS、PHP 项目演示和静态页面,往往比需要常驻 Worker 的应用更容易适配。

但不能从“支持 PHP 8.2 - 8.4”推导出所有 PHP 框架和插件都一定可用。PHP 版本只是解释器版本,不能证明平台开放了哪些扩展、是否允许修改 php.ini、是否支持 URL 重写、上传文件大小是多少,也不能证明命令行 PHP、Composer 或定时任务可用。产品页没有披露这些内容,就应当把它们视为待确认项,而不是默认能力。

部署前可以先在本地做一份环境清单:

php -v
php -m | sort
composer check-platform-reqs
find public -type f | wc -l
du -sh .

php -v 用来确认项目要求的 PHP 主版本;php -m 用来记录依赖的扩展;composer check-platform-reqs 能发现当前依赖与 PHP 或扩展要求是否冲突;find 和 du 则帮助判断文件数量与体积是否接近 1024 MB 的网站空间边界。这里的目标不是把本地结果当作服务端结果,而是先找出明确的硬依赖,再逐项向服务商核对。

“数据库空间 0 MB”是最重要的字段#

产品页同时写出“数据库空间 0 MB”和“数据库数量 1 个”。这两个字段看起来矛盾,工程上却可能代表不同层面的限制:页面允许创建一个数据库,但数据库配额为零;也可能意味着数据库功能存在入口,却没有可用存储。无论具体后台实现是哪一种,用户都不应把它理解为“附送一个可正常承载业务的数据库”。

这会排除大量常见应用。WordPress、许多 PHP CMS、论坛和需要用户登录的管理系统,通常依赖 MySQL 或 MariaDB 保存文章、用户、配置和会话数据。如果数据库不可用,应用即使能上传并执行 PHP,也可能只能停留在安装页面,或者只能作为不持久化的演示程序运行。

更稳妥的判断方法是把项目拆成三类数据:

  1. 必须持久化的数据:文章、账户、订单、配置和权限信息。如果没有可靠数据库,不能部署核心业务。
  2. 可以生成的数据:缓存、缩略图、临时文件。这些可以重新构建,但仍会占用 1GB 网站空间。
  3. 可以外置的数据:评论、表单、统计和搜索索引。如果使用第三方服务,必须额外评估隐私、可用性、迁移和供应商锁定。

不要为了适配零数据库环境,把本应进入数据库的内容简单写进 JSON 或文本文件。这样做会引入并发写入、锁、备份一致性和权限控制问题,尤其是在多个请求同时提交表单时。若只是展示型站点,更合理的路径是构建时生成静态页面,把托管空间当作文件分发环境,而不是把它伪装成一台后端服务器。

可以用下面的检查思路验证一个项目是否真正依赖数据库:

rg -n "mysql|mysqli|PDO|postgres|redis|DATABASE_URL|DB_HOST" .
rg -n "session|queue|worker|cron|schedule" composer.json config app src 2>/dev/null

第一条用于寻找数据库连接和驱动痕迹,第二条用于寻找会话、队列、后台 Worker 和定时任务依赖。搜索结果为空并不能证明项目不需要数据库,但一旦出现这些关键字,就应该把“无数据库空间”视为阻断条件,而不是部署后再碰运气。

1GB 空间不只是代码大小#

1024 MB 的网站空间通常不会只被 Git 仓库里的源代码占用。上传目录、用户头像、图片缩略图、日志、缓存、依赖目录和备份文件都会消耗同一类配额。即使一个博客最初只有几十 MB,图片和历史压缩包也可能让空间持续增长。

因此,部署前需要建立“可删除”和“不可删除”的边界。源码、公开资源和必要配置属于核心文件;缓存、构建产物和临时上传属于可重建文件;数据库导出、压缩备份和访问日志则需要明确保存周期。尤其不要把多份整站备份长期放在同一个 1GB 配额里,否则备份会与线上站点争夺容量。

上线后可以通过目录统计定位增长来源:

du -h -d 1 . | sort -h
du -h -d 2 public storage uploads 2>/dev/null | sort -h | tail -20
find . -type f -size +50M -print

这些命令适合在本地发布目录或拥有 Shell 权限的环境中使用。如果虚拟主机不提供 Shell,就需要通过 FTP 客户端的目录统计功能,或者定期下载文件列表后比较大小。不能假设 FTP 用户拥有完整的系统权限;产品页只说明提供 FTP 用户,并未说明是否支持 SSH、Shell、Git 或 Composer。

图片处理尤其需要谨慎。原图、缩略图和编辑中间文件可能形成多份副本;如果应用支持访客上传,还要限制单文件大小、扩展名和总容量。不能把“可绑定 5 个域名”理解为“可以承载 5 个独立业务”,因为这些域名共享同一个网站空间、PHP 环境和平台配额。

域名和 FTP 数量不是隔离边界#

页面列出最多 5 个可绑定域名和 5 个 FTP 用户。这些是管理能力的数量上限,不等于每个域名都有独立的 CPU、内存、磁盘或故障域。多个站点放在同一账户下,会共享空间和运行环境;一个站点产生大量文件或流量时,可能影响其他站点的管理和维护。

工程上更应该把域名分组:核心站点、测试站点和临时演示站点分别使用不同目录;不同用途的 FTP 用户只授予对应目录;不要让临时项目拥有整个站点根目录的写权限。即使平台已经做了账户隔离,应用层最小权限仍然有价值,因为泄露一个 FTP 凭据不应自动暴露所有站点文件。

上线前可以按以下清单检查:

  • 每个域名是否都能访问正确的站点目录,而不是落到默认页面。
  • 测试域名是否会被搜索引擎收录,是否需要访问控制。
  • FTP 用户是否只进入指定目录,是否仍保留不再使用的账户。
  • 配置文件是否包含密码、令牌或私钥,且不会被 Web 服务器直接下载。
  • 上传目录是否禁止执行不需要的脚本,应用是否限制上传文件类型。
  • 是否准备了域名、文件和配置的迁移副本,而不是只依赖线上目录。

“不提供邮件服务”也应被视为架构边界。网站可以展示联系地址,但不能据此假设平台会提供邮箱、SMTP、收件箱或邮件投递能力。注册通知、密码重置和表单通知如果是业务必需,就需要单独选择邮件服务,并把发信失败、退信和隐私合规纳入设计。

用验证而不是宣传判断能否上线#

对这类低成本托管,最容易犯的错是把“页面能打开”当成“项目可运行”。更可靠的验收应该分成四层。

第一层是文件层:上传最小页面,确认域名解析、目录映射和 HTTPS 行为,再上传一个只输出 PHP 版本的临时诊断文件。诊断完成后应立即删除,避免暴露环境信息。

第二层是运行层:验证项目要求的 PHP 版本、扩展、文件上传、URL 重写和静态资源路径。如果平台不提供修改 Nginx 配置的能力,就必须确认框架的路由方案是否与现有规则兼容。

第三层是数据层:明确数据库到底是否可用、容量如何计算、连接地址如何提供,以及备份是否包含数据库。如果产品页没有给出清晰答案,就不要把登录、评论、订单等不可丢失数据部署到线上。

第四层是恢复层:在本地保留源码、构建产物、上传文件和配置模板;模拟删除线上目录后重新上传;确认域名更换、FTP 凭据更换和服务迁移不会让站点失去恢复路径。低价服务最应该提前验证的不是“能不能装上”,而是“换平台时能不能带走”。

最终取舍:把它当发布出口,而不是基础设施#

根据官方页面披露的信息,这项产品最明确的价值是:用固定的 Nginx + PHP-FPM 环境,承载体量有限、依赖简单的个人网站、博客或项目演示。它的优势是减少服务器维护工作,代价是用户无法控制底层环境,数据库、邮件、后台进程、命令行工具和资源隔离都不能想当然。

因此,一个实用的决策规则是:如果项目可以构建成静态文件,或者只需要标准 PHP 请求,并且能够接受 1GB 网站空间与外部化数据服务,那么虚拟主机可以作为低成本发布出口;如果项目需要数据库、队列、常驻进程、系统级配置、独立监控或严格的资源隔离,就应直接选择更合适的托管形态,而不是把虚拟主机硬改造成 VPS。

社区帖子负责告诉我们“哪里可能出现机会”,官方产品页负责限定“机会究竟是什么”。面对任何白嫖、低价或一年期活动,最有价值的动作不是马上上传代码,而是把宣传语翻译成配额、权限、依赖和迁移问题。能被逐项验证的边界,才是这个产品真正提供的能力。

参考资料#

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

免费虚拟主机不是小 VPS:从 1GB 配额拆解 PHP 网站的真实边界
https://blog.katelya.top/posts/free-hosting-is-not-a-small-vps/
作者
Katelya
发布于
2026-09-08
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

相关文章 智能推荐
1
NAT VPS 不是迷你独服:从 Incus 容器边界拆解 1C/128M 低价实例的真实能力
技术实践 低价 NAT VPS 的关键从来不只是 CPU、内存和流量数字,而是实例到底处在什么网络与隔离边界中。本文以材料中明确标注“基于 Incus”的平台为线索,结合社区公开的 1C、128M、512M 磁盘与 500G 流量样本,拆解 NAT 实例的地址模型、资源限制、可验证能力与失败边界,并给出一套不依赖宣传页的检查清单。
2
免费服务生态如何长跑:从源码托管、动态入口到运维边界
工程札记 一个免费服务站点同时提供公共邮箱、邮箱验证、解析工具和源码部署,真正值得研究的不是服务数量,而是它如何组织入口、部署、运维与持续性承诺。本文基于公开页面与社区样本,拆解这类公共服务生态的控制面、数据面、动态地址和验证方法,并给出自建或接入时可执行的检查清单。
3
免费 Token 的工程边界:从 AutoClaw 与 AXAI 拆解免费额度与中转充值的信任模型
技术实践 2026年9月23日,AutoClaw与AXAI相继推出限时免费额度活动。本文基于公开材料,从信任模型、模型路由、领取流程及失效边界四个维度,拆解免费Token与中转充值在工程实践中的差异,探讨限时福利背后的成本与风险边界。
4
千万 Token 不是永久免费:拆解华为云码道 CodeArts 的额度边界与工程用法
技术实践 华为云码道官方活动页面显示,CodeArts 代码智能体体验版可获得每日 1000 万免费 Token,但额度当日清零、仅限产品内部使用,模型和活动规则也可能调整。本文从配额机制、产品边界和工程验证出发,给出一套不把“免费 Token”误当成通用 API 资源的使用方法。
5
一个 status=true 的 AI 网关,离可用还差多少:从 AXAI 入口拆解验证链与凭据边界
技术实践 一个 API 根路径返回“running”和“status=true”,只能证明某个 HTTP 入口能够响应,不能证明模型路由、鉴权、额度、流式协议或故障处理真正可用。本文以 AXAI API Gateway 的公开响应和社区公开凭据样本为起点,建立一套不复用敏感信息的 AI 网关验证链,并拆解健康检查、契约测试、凭据治理与上线边界。

目录