PHP包含路径 - 如果文件引用"./"前缀,则包含失败

Tri*_*tan 1 php include include-path

当包含的文件本身包含另一个文件但是用点前缀引用它时,我遇到了包含问题.例如,有三个文件 - inc1.php,inc2.phpsubdir/test.php,其内容是 -

子目录/ test.php的:

set_include_path(get_include_path().":../:../.");
require("inc1.php");
Run Code Online (Sandbox Code Playgroud)

inc1.php:

require("./inc2.php");
Run Code Online (Sandbox Code Playgroud)

inc2.php

echo "OK";
Run Code Online (Sandbox Code Playgroud)

这包括此处显示的树因无法打开的流而失败:没有此类文件或目录错误.如果inc1.php包含一个简单的require("inc2.php"),它就可以工作.,没有"./"前缀.我添加了"../." 将include路径作为尝试使其工作,但这没有任何效果.

除了使用"./"前缀执行include之外,这里有什么解决方案,假设inc1.php和inc2.php不可写,你只能改变subdir/test.php?你怎么能在test.php中包含inc1.php?

作为参考,我使用的是PHP 5.2.9.

Mat*_*ley 6

始终包括使用以下样式,除非您有(非常)令人信服的理由不这样做:

include(dirname(__FILE__)."/inc2.php");
Run Code Online (Sandbox Code Playgroud)

它可以避免各种令人头疼的问题.