在子目录PHP文件中读取上级目录footer.php失败,求问题排查与解决
我创建了一个footer.php文件,代码内容如下:
<footer class="footer"> <div class="container"> <div class="row"> <div class="footer-col col-md-5"> <p>Copyright © 2018 Nens Events.</p> </div> </div> </div> </footer>
该文件存放路径为/php/footer.php。我需要在子目录/events/na/1.php中读取此文件,但使用代码<?php echo file_get_contents("/php/footer.php"); ?>时无法成功读取,请问我哪里操作有误?
解答
嘿,问题出在路径的写法上,我给你拆解一下:
为什么原来的代码失败?
你写的/php/footer.php是服务器系统的绝对路径,不是你网站根目录的绝对路径。除非你的网站直接部署在服务器的根目录(这种情况很少见),否则这个路径会指向服务器根下的php文件夹,而不是你网站项目里的php文件夹,自然找不到文件。
几种可行的解决方法:
1. 使用相对路径
从/events/na/1.php到/php/footer.php,需要往上回退两级目录(从na到events,再到网站根目录),然后进入php文件夹。对应的相对路径是../../php/footer.php:
<?php echo file_get_contents("../../php/footer.php"); ?>
2. 使用基于网站根目录的绝对路径(推荐)
利用PHP的$_SERVER['DOCUMENT_ROOT']变量,它会返回你网站部署的根目录绝对路径,拼接上你的文件路径就能确保不管当前文件在哪个子目录都能正确找到:
<?php echo file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/php/footer.php"); ?>
3. 用include/require引入(更符合PHP模板习惯)
因为footer.php是页面模板内容,直接用include也能输出内容,写法更简洁,而且如果文件不存在还能方便调试错误:
<?php include "../../php/footer.php"; ?>
内容的提问来源于stack exchange,提问作者Ariuw
相关产品推荐
相关产品推荐

