Php &引用;“当前目录”;符号不起作用

Php &引用;“当前目录”;符号不起作用,php,directory,Php,Directory,我被告知,指定链接到的文件的目录是一种很好的做法,即使该文件位于当前目录中。因此,例如,使用“/constants.inc.php”而不是“constants.inc.php”。这通常对我来说效果很好,除了代码中的一个特殊点,当我使用./notation时,会出现以下PHP错误: 警告:require(./constants.inc.php)[function.require]:无法打开流:第4行的C:\xampp\htdocs\widget\u corp\includes\functions.

我被告知,指定链接到的文件的目录是一种很好的做法,即使该文件位于当前目录中。因此,例如,使用“/constants.inc.php”而不是“constants.inc.php”。这通常对我来说效果很好,除了代码中的一个特殊点,当我使用./notation时,会出现以下PHP错误:

警告:require(./constants.inc.php)[function.require]:无法打开流:第4行的C:\xampp\htdocs\widget\u corp\includes\functions.inc.php中没有此类文件或目录

致命错误:require()[function.require]:无法打开第4行C:\xampp\htdocs\widget\u corp\includes\functions.inc.php中所需的“/constants.inc.php”(includes\path=”;C:\xampp\php\PEAR;C:\xampp\htdocs\websites\mathverse\includes”)

编写“/constants.inc.php”会出现此错误,但“constants.inc.php”不会出现此错误(php似乎很好地找到了该文件)。有人能告诉我为什么./notation在这种特殊情况下不起作用吗?也许我错过了一些很简单的东西

为了提供更多的上下文(如果需要),错误出现在下面的函数中(第2行),它位于includes目录中的PHP函数文件(称为functions.inc.PHP)中。constant.inc.php文件也在includes目录中

多谢各位

function connect_to_db() {
  require("./constants.inc.php");
  $connection_id = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
  if (!$connection_id) {
    die("Database connection failed: " . mysql_error());
  }
  $db_selection_was_successful = mysql_select_db(DB_NAME, $connection_id);
  if (!$db_selection_was_successful) {
    die("Database selection failed: " . mysql_error());
  }
}
编写“/constants.inc.php”会出现此错误,但“constants.inc.php”不会出现此错误(php似乎很好地找到了该文件)。有人能告诉我为什么./notation在这种特殊情况下不起作用吗?也许我错过了一些很简单的东西


我唯一的解释是,PHP似乎在include路径中的一个目录中找到了
constants.inc.PHP
文件-很可能
C:\xampp\htdocs\websites\mathverse\includes

即使有或没有
PHP也会搜索相同的文件(对于
/
,它不会在include_path中搜索),这意味着constats.inc.php不存在

试试这个

require(dirname(__FILE__)."/../constants.inc.php");

创建以下继承人:

index.php // echo 'I am in the top directory';
folder1/
    index.php // echo 'I am in folder 1';
    folder2/
        index.php // 'echo I am in foler' 2
在顶级index.php上,需要
folder1/index.php
。从中需要
'folder2/index.php';

这没有问题。但是,在
folder2/index.php
之前添加一个
/
,您将得到一个错误。似乎一旦您使用
指定了所需的文件夹,它必须相对于当前工作目录。但是如果保持打开状态,路径也将在调用脚本自己的目录中进行检查。

根据给定的文件路径包括文件,如果没有,则根据指定的include\u路径包括文件。如果在include\u路径中找不到该文件,include最终将签入调用脚本自己的目录和当前工作目录,然后失败。。如果include构造找不到文件,则会发出警告;this是不同于require的行为,它将发出致命错误


/somefile
somefile
没有什么不同。我看不出这是一个好的做法。或者如果你使用的是PHP5.3+@richsage,我想避免这种情况,因为有些用户总是在谈论如何提供最兼容的帮助。当然,我不是建议完全替换它,只是作为一个“可选的额外选项”:-)它怎么可能不存在呢?我亲眼看见了!另外,require(“constants.inc.php”)可以工作。+1可以平衡,因为这是理想的方法,但是您的第一个声明是不正确的:如果没有
/
,php将在include路径中搜索;对于
/
,据我所知,它不会。这是一个非常好的主意,只是我检查了include路径的目录,并且没有名为constants.inc.php.square的文件。使用下面的@Genesis方法会发生什么?我不熟悉Genesis方法。我是按字面意思输入,还是里面有占位符?@Bill按字面意思输入。它将为您提供相对于包含的文件而不是主脚本的完整当前路径。看看会发生什么会很有趣。另外,常量文件确切位于哪个目录?现在警告是:警告:require(C:\xampp\htdocs\widget\u corp\includes/./constants.inc.php)失败。。。