0

听起来很挑剔,但这让我挂了大约一个小时左右。

我在 JavaScript 中设置了这样的路径

const JAVASCRIPT =              'host/source/ArcJB.js';

在我的文档中呈现如下:

<script type="text/javascript" src="host/source/ArcJ.js"></script>

如果我在前面加上/它会破坏链接。

在 PHP 中,对于服务器端路径,我使用:

<?php
    include_once getcwd() . "/host/source/class.ControlEntry.php";

如果我不放入/它会破坏事情。

我想从概念上讲,我怎么知道这一点,所以我不必反复试验?

还指出:

我的 .js 文件中的路径可以在路径之前使用 a/或不使用 a /

这些用于图像查找或 ajax 调用。

4

3 回答 3

6

您应该知道,您传递给的路径include_once是在服务器本身上解析的,而 Javascript 中的路径是由浏览器解析的。两者基本上遵循相同的规则:

  • 以开头的路径/是绝对解决的。在服务器上,这是根目录(即最顶层的目录)。在浏览器中,这基本上是连接主机和您指定的路径。
  • 不以 a 开头的路径/是相对解析的,即针对服务器上的当前目录和浏览器中的路径。

意识到getcwd()返回一个像/var/www. 如果你只是连接host/source/class.ControlEntry.php到它,它将产生/var/wwwhost/source/class.ControlEntry.php. 在大多数(如果不是,全部)PHP SAPI 上,您可以在包含文件时省略该getcwd()内容,因为在包含文件时已经在搜索当前目录。在这种情况下,您也不需要/

最后,服务器文件路径不必与 URL 匹配http://example.com/script.php可以位于/var/www/script.js。如果您在 HTML 文件中引用/script.php,它将被正确解析。另一方面,您不应该尝试include "/script.php",这将在您的文件系统的根目录中搜索一个文件script.php,而这通常不是您要查找的文件。

于 2012-05-20T18:47:15.680 回答
3

前面的斜杠用于表示路径应被视为绝对路径,这意味着,

  1. 对于您的 Js 路径,它驻留在浏览器解析以呈现其内容的 HTML 文件中,它应该将您写入的内容附加到域以获取文件。如果您的 Js 文件相对于您的代码段所在的当前页面,则链接可能会中断。
  2. 对于您的 php 文件,它位于可以通过以下系统根目录访问的路径中host/source/class.ControlEntry.php
于 2012-05-20T18:48:08.610 回答
2

您知道文件所在的位置。使用它们的相对或绝对路径,它适用于 PHP 和 JavaScript。

在您的示例中,前面的/内容将使路径指向其他地方,从而破坏应用程序。在您的 PHP 示例中,您特别连接了路径字符串 - 这将取决于getcwd().

于 2012-05-20T18:46:49.400 回答