【发布时间】:2013-07-14 14:48:49
【问题描述】:
我在文件夹myfolder 中有一个文件test.php。 myfolder 还包含另一个名为 inner 的文件夹。
myfolder 和 inner 都包含一个名为 msg.php 的文件。整个布局如下所示:
- 我的文件夹
- test.php
- 内
- msg.php
- msg.php
在test.php 中,我将include_path 设置为./inner 并包含文件msg.php:
<?php
error_reporting(E_ALL | E_STRICT);
ini_set("include_path", "./inner");
echo ini_get('include_path'); // shows ./inner
include("msg.php"); // outputs hello from myfolder/inner/msg.php
?>
但是,如果我将工作目录修改为./inner,则将包含myfolder/msg.php 而不是myfolder/inner/msg.php:
<?php
error_reporting(E_ALL | E_STRICT);
ini_set("include_path", "./inner");
echo ini_get('include_path'); // shows ./inner
chdir('./inner');
include("msg.php"); // outputs hello from myfolder/msg.php
?>
第二段代码不应该包括myfolder/inner/msg.php而不是myfolder/msg.php吗?
【问题讨论】:
-
附注.. 当您执行
ini_set("include_path", "./inner");时,您会完全覆盖您的包含路径 -
@DevZer0,是的,我正在覆盖包含路径。因此,第二段代码应该包含 myfolder/inner/msg.php 而不是 myfolder/msg.php 对吧?
-
在第二个示例中,您将 chdir 设置为
./inner,然后告诉它将include_path设置为不存在的目录./inner。您实际上是在告诉它将包含目录设置为/inner/inner。尝试将包含目录设置为/inner而不是./inner -
是的,它应该包括
./inner -
@Pacerier:不,它首先检查脚本的调用目录。
标签: php include php-internals