PHP包含混乱

Dan*_*nly 4 php include

我正在为我的网站构建基本框架,并且我有一个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中没有这样的文件或目录

我是否会对这两个文件进行错误的交叉连接,或者是否有一个正当的理由说明它无法正常工作

Pas*_*TIN 6

一般来说,一种安全的做法包括使用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()确保给定的文件不会被包含多次.

不止一次包含文件会导致麻烦,特别是如果它包含常量,函数或类定义.

  • 此外,您可能需要考虑使用`require_once`或`include_once`而不是`include`,因为可能存在周期性问题. (2认同)