0

包括文件时我想知道的事情:

假设我想包含一个文件或链接到它。我应该举个例子:

include("../localfile.php");

还是我应该改用

include("http://sameserver.com/but/adirect/linkto/localfile.php");

这个比那个好吗?还是更安全?还是只是个人喜好?

显然,如果您有一个要包含在多个目录中的文件中的文件,并且该文件包含不同的文件,那将是必要的,还是有其他方法可以做到这一点?

4

6 回答 6

5

读取文件比发出 HTTP 请求并获得响应要快得多include(a_uri)如果你能帮助它,永远不要。

如果$_SERVER['DOCUMENT_ROOT']要计算包含的完整文件路径,请使用。

于 2010-04-26T14:54:22.287 回答
1

绝对包含本地文件,因为 php 脚本并不真正知道或关心您是否在本地服务器上包含脚本,因此 url 路径会导致 http 请求,而 http 请求的网络延迟几乎是瓶颈一般来说,渲染任何 html 页面,你拥有的页面越少,你就会越好。

就个人而言,我尽量避免使用includeandrequire通常,支持require_once,因为 usingrequire_once意味着您正在编写可重用的代码,而不是编写包含它时立即执行的代码。拉入类定义,拉入函数库,但尽量避免在包含它时立即执行的代码,因为这会使其更难重用。

于 2010-04-26T14:55:29.527 回答
1

如前所述,绝对包含一个本地文件,而不是执行 HTTP 请求(这需要更多时间,不缓存,并且内容在技术上对全世界都是可见的,如果他知道在哪里寻找它)。
还有一个小细节,如果您使用包含文件的完整路径,它甚至会比相对路径更快,特别是如果您使用某种字节码缓存。

于 2010-04-26T14:59:24.777 回答
1

如果您的问题是关于保留它,以便在从暂存转移到生产时不必更改十亿条路径,请使用我学到的这个小花絮:

 define('BASE_DIR',  '/path/to/root/');

然后BASE_DIR在所有路径引用中使用。当需要移动您的站点时,只需将该定义更改为新路径(应该就/在那时)。

于 2010-04-26T15:01:23.953 回答
1

除了其他人所说的,这些调用会有不同的结果,因为 remove 调用将执行 php output,而不是文件内容。除非您停止 php 处理文件,否则在这种情况下,您将代码暴露给世界,这也不一定是您真正想要的。

于 2010-04-26T15:08:20.777 回答
0

始终在本地包含,因为如果您包含远程,则有人可以创建不同的文件并做一些讨厌的事情。另一个你不能用远程包括测试的问题。据我所知,您应该改用 require_once ...

于 2010-04-26T14:56:27.730 回答