Php &引用;“当前目录”;符号不起作用
我被告知,指定链接到的文件的目录是一种很好的做法,即使该文件位于当前目录中。因此,例如,使用“/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目录中 多谢各位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.
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)失败。。。