在我的应用程序中,我正在使用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中没有这样的文件或目录
我做错了什么?
答案 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");