我应该包括本地还是远程?

时间:2010-04-26 14:50:56

标签: php include-path

我想知道包含文件时的一些事情:

说我想要包含一个文件或链接到它。我应该只是例如:

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

或者我应该使用

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

一个比另一个好吗?还是更安全?或者只是个人偏好?

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

6 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

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

就我个人而言,我尽量避免使用includerequire来支持require_once,因为使用require_once意味着您可以重复使用代码而不是编写包含它时立即执行的代码。引入类定义,引入函数库,但尽量避免在包含它时立即执行的代码,因为这会使重用更加困难。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

如果你的问题是关于如何保留它,那么当你从升级转到生产时你不必改变十亿条路径,那就去看看我学到的这个小小的问题:

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

始终包含在本地,因为如果您包含远程,则某人可以创建不同的文件并执行令人讨厌的事情。另一个问题是你无法用远程测试这个包括。据我所知,你应该使用require_once ......

相关问题