如何解决php的include_path包括以./开头的文件
|| 在我的PHP框架中,我想使用另一个PHP框架的几个功能。该其他框架只有一个门户网站脚本(index.php)。从那里开始,它可以执行所有操作(引导程序,呼叫控制器和操作等)。另一个框架包括以./开头的所有文件。 另一个框架的index.php:include \'./inc/bootstrap.php\';
在bootstrap.php中:
include \'./inc/configs.php\';
include \'./inc/database.php\';
等
所以看起来所有包含都相对于index.php所在的文件夹。
有什么方法可以设置环境,以便我可以从另一个文件夹(框架中的某个位置,因此是一个完全不同的文件夹而不是门户网站脚本)引导框架?
include_path
包括.
,我也尝试了在include_path中与其他框架的文件夹一起使用它,但是没有任何改变。
我猜它是./包含的,但是我不能更改它们(其他框架不是我的框架的一部分,将在一段时间后更新)。有没有解决的办法(或者我做错了什么)?
解决方法
以开头的路径。或/忽略include_path,因为它们是相对于工作目录的。
因此,唯一的方法是使用PHP函数chdir更改工作目录:
在您的框架中:
chdir(\'/path/of/the/other/framework\'); // change the working directory
require \'/path/of/the/other/framework/bootstrap.php\';
// optionally you can reset the working directory
chdir(dirname(__file__));
,当您要包含另一个框架的引导文件时,您需要先在该目录中“ 5”,然后再包含它,随后所有包含的内容都将相对于引导文件而言是正确的。
,您应该可以使用set_include_path( $path_to_include_files )
进行此操作。如果仍然有问题,可能意味着脚本中还有一个地方将include_path
设置为另一个值。
, 这些文件按以下顺序包括
包含路径,在此示例中,
目录结构如下:
。
│— index.php
│— t1
││-a
│└─b
└─t2
| — b
c─c
<?php
set_include_path(\'t1\' . PATH_SEPARATOR . \'t2\');
include \'a\'; // includes from T1
include \'b\'; // includes from T1
include \'c\'; // includes from T2
?>
请注意,包含路径会影响
仅包含/需要功能。
<?php
var_dump(file_exists(\'a\')); // false
var_dump(fopen(\'b\',\'r\')); // file not found
?>
资源
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。