我有以下目录和文件:
└── 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';
它仍然有效。
我想理解为什么两个包含语句都有效,并了解两者中的哪一个更正确。
答案 0 :(得分:4)
来自documentation(强调我的):
如果在include_path中找不到该文件,则最后包含 检查调用脚本自己的目录以及当前的工作情况 失败之前的目录。
file1.php
自己的目录是lib
,它可以在那里找到file2.php
。
答案 1 :(得分:1)
根据给定的文件路径包含文件,如果没有给出,则指定include_path
PHP解析器也会查看file1的file2目录,即使它是从index的目录中包含的。
在file1.php中,包含它的正确方法是
include 'file2.php';
因为它允许你从任何地方包含file1.php,而不仅仅是'project'目录:
include 'lib/file2.php';
如果你决定创建另一个目录并在那里包含file1.php(../ file1.php)