在使用php函数和纯php或ajax调用时,我偶然发现了(至少对我而言)路径的新奇怪行为。
如果我只使用php,php函数中的路径就像:
require_once('wp-content/themes/xxx/tcpdf/tcpdf.php');
但如果我使用与ajax调用完全相同的函数,则路径必须像这样才能使其工作:
require_once('../tcpdf/tcpdf.php');
你能解释一下为什么会这样吗?非常感谢你!
答案 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通常将当前目录作为包含路径,这可能会导致您遇到类似问题。