1

我的文件 1.php 有一个 2.php 的 require_once (它们都在不同的文件夹中)。我遇到的问题是 1.php 似乎神奇地包含了 2.php,因为 2.php 的路径不在 1.php 中。可以肯定的是,我什至在 require_once '2.php' 之前添加了一个 set_include_path('.') ,但它仍然有效......有什么明显的我遗漏了或者这很奇怪吗?

编辑:

//-- file 1.php
//-- long list of requires...
set_include_path('.');
echo get_include_path();
require_once '2.php';

以上工作正常,而 1.php 和 2.php 位于不同的文件夹中。

4

5 回答 5

2

PHP中有一些包含魔法,我以前遇到过。
我相信与自动加载相关的东西。
它总是在运行类文件所在的文件夹中查找

于 2010-08-23T10:43:59.497 回答
1

也许您在文件 1 的路径中有一个与文件 2 同名的文件。

于 2010-08-23T10:41:48.173 回答
1

在设置空包含路径后尝试echo get_include_path(),它可能设置在其他位置(例如在 Web 服务器配置文件中)。

于 2010-08-23T09:50:34.583 回答
1

远射,但可能其他包含的文件之一更改了当前工作目录:

<?php
echo 'cwd at the beginning of 1.php: ', getcwd(), "\n";
//-- file 1.php
//-- long list of requires...
set_include_path('.');
echo 'include_path: ', get_include_path(), " \n";
echo 'cwd: ', getcwd(), "\n";
require_once '2.php';
于 2010-08-23T10:04:56.113 回答
1

为了争论,如果您将 2.php 放在与 1.php 相同的位置,是否会包含新文件而不是旧文件?

你能告诉使用你的价值open_basedir是什么吗?

于 2010-08-23T10:16:58.813 回答