我的文件结构:
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')
我做错了什么,如何才能做到这一点?
答案 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');
注意:文件函数返回文件的绝对路径。
可能对你有帮助。