php路径在ajax使用和php使用之间有所不同

时间:2013-05-16 16:09:11

标签: php jquery path

在使用php函数和纯php或ajax调用时,我偶然发现了(至少对我而言)路径的新奇怪行为。

如果我只使用php,php函数中的路径就像:

require_once('wp-content/themes/xxx/tcpdf/tcpdf.php');

但如果我使用与ajax调用完全相同的函数,则路径必须像这样才能使其工作:

require_once('../tcpdf/tcpdf.php');

你能解释一下为什么会这样吗?非常感谢你!

3 个答案:

答案 0 :(得分:2)

我猜你在没有AJAX调用的情况下使用它时,你会从其他文件中包含它,这可能会有所不同。 但是我建议将应用程序根目录存储在常量(例如ROOT)中,然后包含与ROOT相关的所有内容。

答案 1 :(得分:2)

你获得这种行为的原因是因为所有的包含都是从wordpress安装的根目录中发生的,所以你要说的是在你到达文件之前将目录结构放在几层。打破它就是这样的。

wp-content/  Go down one directory level from the file i'm in
themes/      Then go down into the themes directory
xxx/         Then go to the xxx directory
tcpdf/       Then go to the tcpdf directory
tcpdf.php  This is the file you want

当您进行第二次包含时,您位于与wp-content/themes/xxx/tcpdf/共享父级的目录中,所以您所说的是

../        Go up one directory level
tcpdf/     Go into the tcpdf directory
tcpdf.php  This is the file you want

答案 2 :(得分:1)

重新定义set_include_path ( APP_ROOT )的包含路径。通过这样做,ALL includes / requires将相对于您将在常量APP_ROOT中定义的应用程序根目录。

PHP通常将当前目录作为包含路径,这可能会导致您遇到类似问题。