基本目录更改问题

时间:2011-07-11 13:40:40

标签: php

在我的应用程序中,我正在使用AJAX调用来检索信息,这需要包含db_connect.php文件。 db_connect.php需要其他文件才能工作。

如果我从AJAX文件中包含db_connect.php,自然会从db_connect.php文件中的includes返回错误,因为db_connect.php包含的是相对于我的应用程序的基本目录。

如何将工作目录更改为应用程序的基本目录,以便包含的文件能够正常运行?

我尝试过使用chdir功能:

echo getcwd() . "<br/>";
chdir("../../");
echo getcwd();

这正确输出:

/my/webserver/app/lib/ajax  
/my/webserver/app

然而,包含错误的行为就像我不仅仅改变了目录:

  

警告:include_once(functions / clean_string.func.php)[function.include-once]:无法打开流:第8行的/ webserver / app / lib / ajax / ajax.php中没有这样的文件或目录

我做错了什么?

2 个答案:

答案 0 :(得分:1)

然后使用绝对路径。

例如,在配置文件中,它位于应用程序的基础上,定义一个绝对的基本路径。

define("BASE_PATH", dirname(__FILE__)); //This now is a ABSOLUTE path to a dir that this file is in.

然后使用:

include BASE_PATH . "/dir/dir/file.php";

然后,您只需要在每个脚本中包含配置文件,然后在应用程序中的相对位置,然后在所有其他包含中使用BASE_PATH。

答案 1 :(得分:-1)

getcwd()不会返回您的包含路径;相反,尝试这样的事情:

chdir("../../");
include(getcwd()."/functions/clean_string.func.php");