【问题标题】:php paths differ between ajax use and php useajax 使用和 php 使用之间的 php 路径不同
【发布时间】:2013-05-11 15:25:44
【问题描述】:

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

如果我只使用 php,则 php 函数中的路径如下:

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

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

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

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

【问题讨论】:

  • Can you explain me why this so? 不!不是没有更多地了解你的代码
  • 是包含“require_once('../tcpdf/tcpdf.php');”的文件根据调用类型被不同的文件“包含”?如果是,这些父文件是否在不同的目录中?

标签: php jquery path


【解决方案1】:

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

【讨论】:

  • 我一直都是这样做的。这样,无论您走到哪里,该文件始终包含在同一目录中。
【解决方案2】:

重新定义set_include_path ( APP_ROOT ) 的包含路径。通过这样做,所有包含/要求都将相对于您将在常量 APP_ROOT 中定义的应用程序根。

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

【讨论】:

    【解决方案3】:

    您得到这种行为的原因是因为所有包含都发生在 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
    

    【讨论】:

      猜你喜欢
      • 2012-09-01
      • 1970-01-01
      • 2014-10-24
      • 2021-05-08
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多