PHP包括不在另一个文件中工作

时间:2014-06-12 11:55:21

标签: php

我的文件结构:

  • sys:包含3个子文件夹的文件夹 inc class config inc 文件夹中有php个文件init.php
  • 根文件夹中的
  • index.php

我的 config 文件夹中包含数据库凭据的文件,该文件在include_once ('..\config\db_credentials.php');中为init.php。 init文件与包含的文件一起工作正常。

我还在include_once ('sys\inc\init.inc.php');中添加了index.php,但是如果我运行索引文件,它会说:

警告:include_once(.. \ config \ db_credentials.php):无法打开流:C:\ wamp \ www \ example \ sys \ inc \ init.inc.php中没有此类文件或目录第3行

警告:include_once():无法打开' .. \ config \ db_credentials.php'在第3行的C:\ wamp \ www \ example \ sys \ inc \ init.inc.php中包含(include_path ='。; C:\ php \ pear')

我做错了什么,如何才能做到这一点?

5 个答案:

答案 0 :(得分:3)

使用斜杠而不是反斜杠

include_once ('../config/db_credentials.php');.

答案 1 :(得分:2)

我建议您将include path设置为要包含的文件的位置,并使用namespaces将它们分开。

您的文件的相对位置不好,例如../foo.php,但使用基于包含路径(config/dbconfig.php)的相对位置,并且只有您不会再感到意外。这将导致更强大的配置。

答案 2 :(得分:1)

确保您所包含的文件与当前文档相关。

或者我会这样做:

在任何地方使用$_SERVER['DOCUMENT_ROOT']作为前缀(或配置/索引中的define('DOCROOT', $path);

答案 3 :(得分:0)

在您的init文件中,您必须放置include_once ('config/db_credentials.php');

因为当你有级联包含时,根目录始终是第一个被调用的文件。这是你的index.php文件;所有包括都必须来自这里。

如果您直接启动init.php文件,您当前的包含将起作用。这是反对包括的缺点之一;命名空间更好:)

答案 4 :(得分:-2)

您可以通过功能内置的文件 php包含文件。

第一个echo 文件;你希望包含哪个文件。

使用dirname(文件);出一个目录。

当你来到你想要的目录,然后包括像

include(dirname( file )。' /file.php');

注意:文件函数返回文件的绝对路径。

可能对你有帮助。