我正在为我的网站构建基本框架,并且我有一个config.php存储在scr目录中的文件.此外,此目录有一个名为的文件夹php,用于存储名为的文件sidebar.php
基本上,该config.php文件将保存我的数据库配置变量,也是每个页面调用的唯一文件.我希望包含php/sidebar.php在这个文件中,所以我创建的任何变量sidebar.php都可以在所有页面上使用.
但是,我还想sidebar.php访问数据库配置变量.所以这两个文件将有效地相互包含在内.
从配置到侧边栏的包括:
include 'php/sidebar.php';
Run Code Online (Sandbox Code Playgroud)
从侧边栏到配置是:
include '../config.php';
Run Code Online (Sandbox Code Playgroud)
但是,上面的语句(sidebar to config)会产生以下错误消息:
警告:include(../ config.php)[function.include]:无法打开流:
第3行的C:\ xampp\website\scr\php\sidebar.php中没有这样的文件或目录
我是否会对这两个文件进行错误的交叉连接,或者是否有一个正当的理由说明它无法正常工作
一般来说,一种安全的做法包括使用dirname(__FILE__),或者__DIR__如果你使用PHP> = 5.3,则使用绝对路径 - 相对于当前路径编写.
例如,您可以使用:
include dirname(__FILE__) . '/php/sidebar.php';
Run Code Online (Sandbox Code Playgroud)
注意:dirname(__FILE__)并__DIR__指向写入它们的文件的目录.
有了这个,不用担心从哪里包含什么,包括什么:你总是使用绝对pahts引用文件.
手册中的相关页面:
另外,正如@ jwir3在他的评论中指出的那样,你有时会想要使用require_once()或include_once()确保给定的文件不会被包含多次.
不止一次包含文件会导致麻烦,特别是如果它包含常量,函数或类定义.