加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何在require_once中包含路径解析?

发布时间:2020-12-13 13:58:27 所属栏目:PHP教程 来源:网络整理
导读:当我遇到一个奇怪的情况时,我正在 PHP编写一个网络应用程序.为了说明我的问题,考虑一个这个结构的网络应用程序: / index.php f1/ f1.php f2/ f2.php 这些文件的内容: index.php文件: ?php require_once("f1/f1.php"); ? f1.php: ?php require_once("../f
当我遇到一个奇怪的情况时,我正在 PHP编写一个网络应用程序.为了说明我的问题,考虑一个这个结构的网络应用程序:
/
    index.php
    f1/
        f1.php
    f2/
        f2.php

这些文件的内容:

index.php文件:

<?php require_once("f1/f1.php"); ?>

f1.php:

<?php require_once("../f2/f2.php"); ?>

f2.php:空白

现在当我尝试在我的浏览器中打开index.php时,我得到这个错误:

Warning: require_once(../f2/f2.php) [function.require-once]: 
failed to open stream: No such file or directory in /var/www/reqtest/f1/f1.php on line 2
Fatal error: require_once() [function.require]: 
Failed opening required '../f2/f2.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/reqtest/f1/f1.php on line 2

有没有什么明显的我失踪了?包含路径在PHP中如何工作?

在我问这个问题之前,我尝试了解一下.我设置了另一个测试,就像这样:

/
    index.php
    f1/
        f1.php
        f2.php

index.php文件:

<?php require_once("f1/f1.php"); ?>

f1.php:

<?php require_once("f2.php"); ?>

f2.php:空白

令我惊讶(和完全混淆),这样做很好!

那么路径解析背后的秘诀是什么呢?

PS我看到了this question,但仍然没有回答我在这里所说的第二种情况.

如果包含其他文件,工作目录将保留在包含文件的位置.

您的示例正在按预期工作.

编辑:第二个例子是因为. (实际目录)在您的包含路径中(请参阅您的错误消息).

EDIT2:
在您的第二个例子中,您感兴趣的关键点是这一行:

<?php require_once("f2.php"); ?>

起初它会查看当前的工作目录(/ var / www / req_path_test),但是找不到f2.php.

作为回退,它将尝试在您的include_path(‘./usr/share / php:/usr/share / pear’)中找到f2.php,以’.’开头. (这是相对于实际的文件,而不是包括).

所以’./f2.php’工作,而require不会失败.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读