我被告知,最好指定要链接的文件的目录,即使文件位于当前目录中也是如此。因此,例如,使用“./constants.inc.php”而不是“constants.inc.php”。这通常对我来说很好,除了在我的代码中的一个特定位置,当我使用./表示法时,我得到以下PHP错误:
警告:require(./ constants.inc.php)[function.require]:无法打开流:C:\ xampp \ htdocs \ widget_corp \中没有这样的文件或目录包含\ functions.inc.php在线4
致命错误:require()[function.require]:无法打开所需的'./constants.inc.php'(include_path ='。; C:\ xampp \ php \ PEAR; C:\ xampp \ htdocs \ websites第4行的C:\ xampp \ htdocs \ widget_corp \ includes \ functions.inc.php中的\ mathverse \ includes')
写“./constants.inc.php”给出了这个错误,但是“constants.inc.php”没有(PHP似乎找到文件就好了)。有人能告诉我为什么./符号在这种特殊情况下不起作用吗?也许这很简单,我很遗憾?
为了给出更多的上下文(如果需要),错误在下面的函数(第2行)中,这是在我的PHP函数文件(称为functions.inc.php)中,它位于include目录中。 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());
}
}
答案 0 :(得分:3)
写“./constants.inc.php”给出了这个错误,但是“constants.inc.php”没有(PHP似乎找到文件就好了)。有人能告诉我为什么./符号在这种特殊情况下不起作用吗?也许这很简单,我很遗憾?
我唯一的解释是PHP似乎在包含路径的其中一个目录中找到了constants.inc.php
文件 - 很可能是C:\xampp\htdocs\websites\mathverse\includes
。
答案 1 :(得分:3)
即使有或没有./
PHP将搜索相同的文件(在./
的情况下,它不会在include_path中搜索),这意味着constats.inc.php不存在
试试这个
require(dirname(__FILE__)."/../constants.inc.php");
答案 2 :(得分:0)
创建以下heirachy:
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_path。如果在include_path中找不到该文件, include将最终在调用脚本自己的目录和当前工作目录之前检查。如果找不到文件,include构造将发出警告;这与require的行为不同,会发出致命的错误。