行为和正确使用PHP include语句

时间:2018-01-28 13:59:14

标签: php

我有以下目录和文件:

└── project
    ├── index.php
    └── lib
        ├── file1.php
        └── file2.php


<?php
//index.php
include 'lib/file1.php';


<?php
//file1.php
include 'lib/file2.php';


<?php
//file2.php
echo 'this is from an echo statement in file2.php';

当我按照预期在浏览器中尝试时,这确实有效。特别是我认为file1.php中的include语句是有意义的,因为它使用了相对于index.php的位置的file2.php路径,其中包含file1.php,因此file1.php代码的执行位置也是如此。 / p>

但是,如果我将file1.php中的include语句更改为:

,我感到很惊讶
include 'file2.php';

它仍然有效。

我想理解为什么两个包含语句都有效,并了解两者中的哪一个更正确。

2 个答案:

答案 0 :(得分:4)

来自documentation(强调我的):

  

如果在include_path中找不到该文件,则最后包含   检查调用脚本自己的目录以及当前的工作情况   失败之前的目录。

file1.php自己的目录是lib,它可以在那里找到file2.php

答案 1 :(得分:1)

根据the include documentation

  

根据给定的文件路径包含文件,如果没有给出,则指定include_path

PHP解析器也会查看file1的file2目录,即使它是从index的目录中包含的。

在file1.php中,包含它的正确方法是

include 'file2.php';

因为它允许你从任何地方包含file1.php,而不仅仅是'project'目录:

include 'lib/file2.php';

如果你决定创建另一个目录并在那里包含file1.php(../ file1.php)