2

更新:

index.php 文件在这里:

/public_html/d/index.php

包括:

/public_html/d/core/source/class.File1.php

这个 Class.File1.php 这里有这个包含这样写的:

include 'class.File2.php';

当然class.File2.php,如上所述,我将放在与 class.File1.php 相同的目录中。

/public_html/d/core/source/class.File2.php

然而,

它实际上包括这个文件:(注意丢失/d/

/public_html/core/source/class.File2.php

不知道为什么它不使用当前目录中的文件。

但这里有一些可能性。

来自请求页面的用户的条目进入:(用户类型www.host.com/d

/public_html/d/

这包括:(效果很好,我测试过)

/public_html/d/core/source/class.File1.php 

但是,如上所述,该文件中的包含是中断的地方:

include "class.File2.php"

唯一有意义的事情......是包括使用某种内部常量,如

ROOT

或者

$_SERVER['DOCUMENT_ROOT']

但我仍然无法弄清楚为什么它会忽略/d/但找出其余的。

4

3 回答 3

2

您是否尝试过包含相对路径?

include './class.File2.php';

class.File1.php 本身是否包含在其他脚本中?

于 2012-05-24T14:06:24.577 回答
2

您是否在应用程序的任何地方使用set_include_path ?也许这可能是您的问题的原因。通过这样做,您指定了 require、include、fopen()、file()、readfile() 和 file_get_contents() 函数首先查找文件的目录列表。

作为替代方案,我建议您定义绝对路径以避免出现问题。把这个写在你的/public_html/d/core/source/class.File1.php

// This if you are using PHP >= 5.3
include(__DIR__ . '/class.File2.php');

// Or this if you dont have the magic constant __DIR__ available
include(dirname(__FILE__) . '/class.File2.php');

__FILE__并且__DIR__是魔法常数。__FILE__是一个具有该特定文件的绝对路径的常量。并且__DIR__是该文件所在目录的绝对路径。您甚至可以通过执行echo __FILE__;echo __DIR__;

你可以在这里阅读更多关于它们的信息http://php.net/manual/en/language.constants.predefined.php

于 2012-05-24T14:11:14.473 回答
0
  • getcwd()无论它位于什么文件中(在我的系统上),总是返回相同的路径。我认为的一个错误。

  • (在我的系统上)PHP 在包含列表或当前目录中未指定的路径中找到了另一个文件。在我看来,这是一个错误。

  • 在我的系统上,如果您不想使用绝对路径……我发现使用相对路径的唯一方法是dirname(__FILE__);在您想去的地方添加前缀。

  • . 或 ./ 前置文件也不起作用....

于 2012-05-24T18:09:18.640 回答