PHP 的 include 或 include_once 语句无法在纯 .html 文件中生效,必须将页面保存为 .php 扩展名,并通过本地服务器(如 XAMPP)运行,才能正确解析和嵌入外部 PHP/HTML 片段。
php 的 `include` 或 `include_once` 语句无法在纯 `.html` 文件中生效,必须将页面保存为 `.php` 扩展名,并通过本地服务器(如 xampp)运行,才能正确解析和嵌入外部 php/html 片段。
在构建静态结构复用性强的网站(例如影院管理系统)时,将页眉(header)、页脚(footer)等公共部分抽离为独立文件,再动态插入各页面,是提升可维护性与开发效率的关键实践。但需注意:HTML 本身不支持
要实现真正的服务端包含,必须依赖 PHP 的 include 或更安全的 include_once 语句,且需满足两个前提条件:
✅ 文件扩展名必须为 .php
即使文件内容主要是 HTML,也必须以 .php 结尾(如 index.php、movie-detail.php),否则 Web 服务器不会调用 PHP 解析器。
✅ 必须通过本地/远程 Web 服务器访问
直接双击打开 .php 文件(file:// 协议)时,PHP 代码不会执行。必须使用如 XAMPP、MAMP 或 VS Code 的 Live Server(需配合 PHP 插件)等工具启动本地服务器,并通过 http://localhost/your-site/index.php 访问。
✅ 正确实现步骤(以影院项目为例)
-
重命名并重构文件结构
全局结构,仅保留复用片段):
将原 header.html 改为 header.php(无需<!-- ./header.php --> <header class="header"><nav class="navigation-open"><div class="global container grid-x"> <div class="logowrapper grid-x"> <div class="logo-container"> <a href="index.php">@@##@@</a> </div> </div> <!-- ... 其余导航菜单代码(保持原样) --> </div> </nav></header> -
在主页面中调用(如 movie-detail.php)
<meta charset="utf-8"><title>Cate Cinema — Film Detail</title><link rel="stylesheet" href="../page_film/page_film.css"><!-- 字体与 Font Awesome 链接(同原 header.html 中的 head 部分) --><link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.4.0/css/all.css"><link href="https://fonts.googleapis.com/css2?family=Ysabeau+Office:wght@500&display=swap" rel="stylesheet"><!-- ... 其他字体 link --><?php include_once './header.php'; ?><!-- ▼ 唯一变化的主体内容 ▼ --><main class="film-content"><h1>《奥本海默》导演剪辑版</h1> <p>上映时间:2023年7月21日|片长:180分钟|语言:英语</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill5117" title="HTML Extract"><img src="https://img.php.cn/upload/skill/000/000/081/179033952939354.jpg" alt="HTML Extract" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill5117" title="HTML Extract" class="overflowclass">HTML Extract</a> <p class="overflowclass">使用 MinerU 从 HTML 页面和文件中提取内容,将 HTML 转换为保持标题、列表、表格及文本层次结构的干净、结构化 Markdown。F...</p> </div> <a rel="nofollow" href="/xiazai/skill5117" title="HTML Extract" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div> <!-- 电影详情、购票按钮等 --> </main><?php include_once './footer.php'; ?> -
创建 footer.php(同理精简)
<!-- ./footer.php --> <footer class="site-footer"><p>© 2024 Cate Cinema. All rights reserved.</p> <nav><a href="contact.php">联系我们</a> | <a href="privacy.php">隐私政策</a> </nav></footer>
⚠️ 关键注意事项
- 路径问题:include_once 'path/to/file.php' 中的路径是相对于当前执行脚本的位置(非 HTML 中的 href 路径逻辑)。建议优先使用相对路径(如 ./header.php)或绝对路径常量(如 __DIR__ . '/includes/header.php')提高健壮性。
- 避免重复包含:始终优先使用 include_once 或 require_once,防止因多次引入导致函数重定义错误。
- 不要混用 HTML 与 PHP 结构:header.php 中不应再写 、 等全局标签——它只是被“嵌入”的片段;完整 HTML 结构应由主 .php 文件统一控制。
- 已废弃:该 Web Components 特性已被移除标准,现代浏览器完全不支持,切勿使用。
通过以上方式,你不仅能高效复用页眉页脚,还能为后续添加动态功能(如用户登录状态判断、最新影片轮播等)预留清晰的 PHP 扩展接口。记住:PHP 是服务端技术,一切生效的前提是——让服务器跑起来。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










